Как я могу сохранить в базе данных json-кодированную строку с международными символами и затем проанализировать декодированную строку в браузере?
json utf8 кодирование и декодирование:
json_encode($data, JSON_UNESCAPED_UNICODE) json_decode($json, false, 512, JSON_UNESCAPED_UNICODE)
force utf8 также может быть полезным: http://pastebin.com/2XKqYU49
header('Content-Type: application/json; charset=utf-8');
Это проблема с кодировкой. Похоже, в какой-то момент данные представляются в виде ISO-8859-1.
Каждая часть вашего процесса должна быть в кодировке UTF-8.
База данных соединения
Таблицы базы данных
Ваш PHP-файл (если вы используете специальные символы внутри этого файла, как показано в примере выше)
выводимые вами content-type заголовки
content-type
Если ваш исходный файл уже utf8, тогда удалите функции utf8_ *.php5 хранит строки в виде массива байтов.
Вы должны добавить метатег для кодирования в html И вы должны добавить заголовок http, который устанавливает transferencoding на utf-8.*
Попробуйте отправить заголовок кодировки UTF-8:
<?php header ('Content-type: text/html; charset=utf-8'); ?>
И HTML-мета:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
$j_decoded = utf8_decode(json_decode($j_encoded));
$j_encoded = json_encode($j_encoded);
$j_decoded = json_decode($j_encoded);
<meta charset="utf-8" />
Для меня оба метода
<?php header('Content-Type: text/html; charset=utf-8'); echo json_encode($YourData, \JSON_UNESCAPED_UNICODE);
Работа для меня:)
function jsonEncodeArray( $array ){ array_walk_recursive( $array, function(&$item) { $item = utf8_encode( $item ); }); return json_encode( $array ); }
если вы получили ошибку «неожиданный символ», вам следует проверить, есть ли спецификация (маркер порядка байтов, сохраненный в вашем файле utf-8 json. Вы можете удалить первый символ или сохранить, если без спецификации.