Юникод в IIS 7 в Windows 2008 Server SP2

У меня есть простая страница в php, которая получает аргумент с методом get. Страница просто печатает аргумент. Больше ничего. Он правильно работает с английскими символами. Если я передаю в качестве значения аргумента какой-либо язык Unicode (и т. Д. Русский), тогда значение аргумента печатается в виде вопросительных знаков.

Как решить вопрос?

Спасибо Юрий

P.S. добавление заголовка с помощью utf-8 не помогает.

это получить: mypage.php? src = uploaded_files / пока.mp3

это кодировка: ‹meta http-Equiv =" content-type "content =" text / html; charset = utf-8 ">

и это результат: uploaded_files / ????. mp3


person Yuri    schedule 01.02.2011    source источник
comment
Покажите, пожалуйста, более подробную информацию. Можете ли вы привести пример запроса GET и его результатов? В какой кодировке сейчас находится ваша страница?   -  person Pekka    schedule 01.02.2011
comment
это get: mypage.php? src = uploaded_files / пока.mp3 это кодировка: ‹meta http-Equ = content-type content = text / html; charset = utf-8 ›и это результат: uploaded_files / ????. mp3   -  person Yuri    schedule 01.02.2011


Ответы (1)


Думаю, проблема может быть в том, что PHP нативлей не поддерживает Unicode. На странице документации по строкам

Строка - это последовательность символов, поэтому символ - это то же самое, что и байт. То есть возможно ровно 256 различных символов. Это также означает, что PHP не поддерживает Unicode. См. Utf8_encode () и utf8_decode () для некоторых основных функций Unicode.

Эта страница рекомендуется, если вы хотите использовать кодируемый вами юникод, он использует utf8_encode

 $r = "пока.mp3"
 $s = utf8_encode($r);
person Matthew Manela    schedule 01.02.2011
comment
К счастью, id не имело значения. Но я заметил, что _SERVER [QUERY_STRING] имеет значение Unicode. Попробую оттуда извлечь. - person Yuri; 02.02.2011
comment
После извлечения его из $ _SERVER [QUERY_STRING] он переключается на вопросительные знаки. - person Yuri; 02.02.2011
comment
Я не думаю, что необработанные символы Юникода поддерживаются в строках запроса. Я думаю, вам нужно будет закодировать их в URL-адресе. - person Matthew Manela; 02.02.2011
comment
Если да, то почему $ _SERVER [QUERY_STRING] содержит строку Unicode? Я вижу это, если помещаю вызов phpinfo на свою страницу. - person Yuri; 06.02.2011