Как сохранить строку с кодировкой json с международными символами в базе данных, а затем проанализировать закодированную строку в браузере?
<?php
$string = "très agréable";
// to the database
$j_encoded = json_encode(utf8_encode($string));
// get from Database
$j_decoded = json_decode($j_encoded);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<?= $j_decoded ?>
</html>
Это проблема кодирования. Похоже, в какой-то момент данные представляются в виде ISO-8859-1.
Каждая часть вашего процесса должна быть в кодировке UTF-8.
Соединение с базой данных
Таблицы базы данных
Ваш PHP-файл (если вы используете специальные символы внутри этот файл, как показано в примере выше)
Заголовки content-type
, которые вы выводите
кодирование и декодирование json utf8:
json_encode($data, JSON_UNESCAPED_UNICODE)
json_decode($json, false, 512, JSON_UNESCAPED_UNICODE)
сила utf8 также может быть полезна: http://pastebin.com/2XKqYU49
Если ваш исходный файл уже utf8, тогда удалите функции utf8_ *. php5 хранит строки в виде массива байтов.
Вы должны добавить метатег для кодирования в html И вы должны добавить заголовок http, который устанавливает transferencoding на utf-8.
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
и в php
<?php
header('Content-Type: 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);
, нет необходимости в en / decoding utf8 <meta charset="utf-8" />
utf8_encode
так или иначе. но способом, которым Вы использовали его, является poit. 1 Вы кодируете utf8 тогда json, таким образом, для узнавания ваше мнение Вас должны декодировать json и затем utf8
– teemitzitrone
16.05.2020, 19:42
utf8_encode
) необходимо исправить его. хорошо, don' t портят кодирование, также решение и i' ve отредактировал мой ответ для отражения этого
– teemitzitrone
16.05.2020, 19:43
utf8_decode()
(который преобразовывает в ISO-8859-1) в среде UTF-8?
– Pekka 웃
16.05.2020, 19:43
Работа для меня:)
function jsonEncodeArray( $array ){
array_walk_recursive( $array, function(&$item) {
$item = utf8_encode( $item );
});
return json_encode( $array );
}
Для меня оба метода
<?php
header('Content-Type: text/html; charset=utf-8');
echo json_encode($YourData, \JSON_UNESCAPED_UNICODE);
header('Content-Type: application/json; charset=utf-8');