Почему модуль php-json искажает мои строки utf-8? - PullRequest
0 голосов
/ 18 января 2012

Почему это:

<?
var_dump ( json_decode('{"unicode":"\u30d7\u30ec\u30b9\u30ad\u30c3\u30c8"}') );
?>

дает мне:

object(stdClass)#1 (1) {
  ["unicode"]=>
  string(18) "ãã¬ã¹ã­ãã"
}

когда согласно документам это должно быть "be プ ス キ ッ ト"

Это происходит со мнойна одной машине под управлением PHP 5.1.6 с установленным этим модулем согласно инструкциям на http://www.aurore.net/projects/php-json/ и на машине под управлением PHP 5.2.11

Ответы [ 2 ]

1 голос
/ 18 января 2012

Вы должны вывести заголовок кодировки UTF-8, или ваш браузер может интерпретировать необработанную строку json так, как он хочет, например вместо ISO-8859.

0 голосов
/ 18 января 2012

Вы должны сообщить браузеру, что нужно интерпретировать данные как UTF-8, отправив заголовок HTTP перед выводом фактического JSON следующим образом:

header ('Content-Type: application / json; charset = utf-8');

Обратите внимание, что заголовки должны отправляться перед любым другим выводом. Вы, вероятно, должны прочитать спецификации HTTP и узнать, как используются заголовки. Вот ссылка для начала с отправкой HTTP-заголовков в PHP.


UPDATE

В таком случае, когда были отправлены правильные заголовки, важно убедиться, что языковые настройки на вашем тестовом компьютере допускают символы UTF-8. Если локаль по умолчанию в вашей системе не поддерживает UTF-8, и у вас не установлено ни одного такого приложения, вы никогда не увидите правильный вывод. Вы можете прочитать немного больше об этом здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...