json_encode специальных символов из базы данных MySQL - PullRequest
3 голосов
/ 26 апреля 2011

Мне нужно закодировать результат запроса MySQL в формат JSON.

Моя база данных находится в кодировке utf8_unicode_ci.

В частности, у меня есть некоторые специальные символы (например,, €) хранятся в моей базе данных, которая выдает нулевое значение при применении функции PHP json_encode.

Как я могу это исправить?

1 Ответ

6 голосов
/ 26 апреля 2011

Мое слепое предположение состоит в том, что ваше соединение с базой данных MySQL не установлено в UTF-8, что приводит к возвращению символов ISO-8859-1, даже если исходная база данных - UTF-8.

Эти символы будут ломаться json_encode(), потому что они недопустимы в наборе символов UTF-8, чего ожидает json_encode().

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

В семействе функций mysql_* одним из способов является

mysql_query("SET names utf8;");

или в MySQL> 5.0.7, новый

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