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