PHP json_encode строка магистрали при использовании международного символа, такого как é - PullRequest
0 голосов
/ 26 февраля 2011

Этот простой код покажет вам проблему:

class MyObject
{
    var $publicString = "This is a weird character : é and it will trunk this sentence";
}
$myObject = new MyObject();
var_dump(json_encode($myObject));

Вывод var_dump:

 string(47) "{"publicString":"This is a weird character : "}"

Почему?

Ответы [ 2 ]

4 голосов
/ 26 февраля 2011

json_encode() ожидает данные UTF-8.

Я предполагаю, что ваш файл в кодировке ISO-8859-1. ISO-8859-1 é является недопустимым символом в UTF-8.

В качестве обходного пути можно сохранить файл как UTF-8 или сделать iconv():

$myObject->publicString = 
     iconv("iso-8859-1", "utf-8//IGNORE", $myObject->publicString);

var_dump(json_encode($myObject));
0 голосов
/ 26 февраля 2011

json_encode() работает только с набором символов UTF-8.Вот ссылка на пример о том, как решить эту проблему.

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