json со специальными символами вроде é

Я разрабатываю зависимый сценарий выбора, используя jQuery, PHP и JSON в качестве ответа.

Все идет хорошо, за исключением использования специальных символов, таких как французские (é, è, à...)

если я предварительно кодирую их как (& eacute;, & egrave;, & agrave;) (Здесь я использую пробелы между амперсандом и остальной частью слова, чтобы предотвратить автоматическое кодирование в моем вопросе), он работает, но когда отображается с jquery, символы не преобразуются в то, что они должны выглядеть (é...), вместо этого они отображаются как (& eacute;)

Если я пишу их как (é) и не предварительно кодирую их, полное значение в этой записи массива не отображается.

Что мне здесь делать?

Благодарю.

Ответ 1

Так же, как первый anwser

Вы используете базу данных? Если да, убедитесь, что таблица базы данных объявлена UFT8. Как объявлена страница HTML? UTF-8 Является ли строка в файле сценария PHP? Если да, убедитесь, что файл имеет формат файла UTF-8

Вы также можете использовать utf8_encode (для отправки в HTML) и utf8_decode (для получения), но не правильный путь

Ответ 2

Если я пишу их как (é) и не предварительно кодирую их, полное значение в этой записи массива не отображается.

Что мне здесь делать?

В JSON вы не кодируете значения HTML. Вы отправляете их буквально (é) и правильно устанавливаете Content-Type:

header('Content-Type: application/json; Charset=UTF-8');

Объявите кодировку ваших данных, конечно.

Ответ 3

Это сработало для меня, надеюсь, это сработает для всех, кто сталкивается с подобными проблемами.

$title = 'é';
$title = mb_convert_encoding($title, "UTF-8", "HTML-ENTITIES");

header('Content-Type: application/json; Charset="UTF-8"');
echo json_encode(array('title' => $title));

Функция mb_convert_encoding принимает значение и преобразует его из (в данном случае) HTML-ENTITIES в UTF-8.

См. Здесь подробную информацию о функции http://php.net/manual/en/function.mb-convert-encoding.php