Unicode setlocale и strftime не работают в Windows
У меня есть одна страница, и это кодировка UTF-8, и если я пытаюсь запустить этот код в Unix-системе, все выглядит хорошо, но когда я пытаюсь запустить в Windows(7), некоторые персонажи выглядят вопросительным знаком (). Как можно нормально запустить код обеих двух систем (без использования iconv).
header('Content-Type: text/html; charset=UTF-8');
setlocale(LC_ALL, 'turkish');
echo strftime("%d %B %Y, %H:%M");
2 ответа
Для тех, у кого есть подобные проблемы на Linux (это может работать и для Windows, но не уверен).
Да, есть "Турецкий", но есть и "tr_TR.utf8". Если вы используете tr_TR.utf8, скорее всего, ваши проблемы будут смыты. То же самое относится и к "греческому". Вместо этого используйте 'el_GR.utf8'
В Linux вы можете проверить список локалей, чтобы найти правильные настройки для вашего сайта.
locale -a
Список слишком длинный, и вы не можете видеть все языки, поэтому вы можете просто скопировать его в файл, а затем открыть файл для проверки.
locale -a > locale.txt
vi locale.txt
или сделать локаль -a | grep languagecode для определенного языка
locale -a | grep tr
Microsoft Windows не поддерживает локали UTF-8. Поэтому, если вы предоставите турецкий язык, он выберет 8-битную кодовую страницу, которая позволяет представлять определенный язык.
Например, для языка иврит это будет кодовая страница-1255, для турецкого - 1254.
Таким образом, вы не можете использовать это на платформе MS-Windows.
Как можно нормально запустить код обеих двух систем (без использования iconv).
Возможно использовать кодировку не-utf8 под MS Windows.