Unicode setlocale и strftime не работают в Windows - PullRequest
2 голосов
/ 04 февраля 2010

У меня есть одна страница, и она имеет кодировку 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 ]

9 голосов
/ 04 февраля 2010

Microsoft Windows не поддерживает локали UTF-8. Поэтому, если вы предоставите турецкий язык, он выберет 8-битную кодовую страницу, которая позволяет представлять определенный язык.

Например, для языка иврит это будет кодовая страница-1255, для турецкого - 1254.

Итак, вы не можете использовать это на платформе MS-Windows.

Как нормально выполнить код для обеих систем (без использования iconv).

Возможно использовать кодировку не-utf8 под MS Windows.

3 голосов
/ 12 июля 2011

Для тех, у кого есть подобные проблемы в Linux (это может работать и для Windows, но не уверен).

Да, есть турецкий язык, но есть также tr_TR.utf8. Если вы используете tr_TR.utf8, скорее всего, ваши проблемы будут смыты. То же самое относится и к «греческому». Вместо этого используйте 'el_GR.utf8'

В linux вы можете проверить список локалей, чтобы найти правильные настройки для вашего сайта.

locale -a

Список слишком длинный, и вы не можете видеть все языки, поэтому вы можете просто скопировать его в файл и затем открыть файл для проверки.

locale -a > locale.txt
vi locale.txt

или сделайте locale -a | grep languagecode для определенного языка

locale -a | grep tr
...