2010-02-04 2 views
2

У меня есть одна страница, и она кодируется UTF-8, и если я пытаюсь запустить этот код в системе unix, все выглядит отлично, но когда я пытаюсь запустить в windows (7), некоторые chracters выглядят вопросом знак(). Как можно запустить код как в двух системах (без использования iconv).Unicode setlocale и strftime не работает в Windows

header('Content-Type: text/html; charset=UTF-8'); 
setlocale(LC_ALL, 'turkish'); 
echo strftime("%d %B %Y, %H:%M"); 
+0

единственная разница сервер? Не браузер, программа FTP или редактор, сохраняющий его? Я знаю, это звучит странно, но если ваш редактор установлен в другом наборе символов, или его кодировка по умолчанию может повлиять на него. Иногда это боль. – jerebear

+0

Да, только разница - это сервер. Типы кодировки для всех файлов одинаковы. – mTuran

ответ

3

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

Да, есть «турецкий», но есть также «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 
9

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

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

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

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

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