PHP json_encode json_decode UTF-8 - PullRequest
       10

PHP json_encode json_decode UTF-8

23 голосов
/ 02 ноября 2010

Как я могу сохранить в базе данных json-кодированную строку с международными символами и затем проанализировать декодированную строку в браузере?

Ответы [ 9 ]

38 голосов
/ 24 мая 2015

json utf8 кодирование и декодирование:

json_encode($data, JSON_UNESCAPED_UNICODE)

json_decode($json, false, 512, JSON_UNESCAPED_UNICODE)

force utf8 также может быть полезным: http://pastebin.com/2XKqYU49

28 голосов
/ 23 декабря 2013
  header('Content-Type: application/json; charset=utf-8');
23 голосов
/ 02 ноября 2010

Это проблема с кодировкой. Похоже, в какой-то момент данные представляются в виде ISO-8859-1.

Каждая часть вашего процесса должна быть в кодировке UTF-8.

  • База данных соединения

  • Таблицы базы данных

  • Ваш PHP-файл (если вы используете специальные символы внутри этого файла, как показано в примере выше)

  • выводимые вами content-type заголовки

11 голосов
/ 02 ноября 2010

Если ваш исходный файл уже utf8, тогда удалите функции utf8_ *.php5 хранит строки в виде массива байтов.

Вы должны добавить метатег для кодирования в html И вы должны добавить заголовок http, который устанавливает transferencoding на utf-8.*

4 голосов
/ 02 ноября 2010

Попробуйте отправить заголовок кодировки UTF-8:

<?php header ('Content-type: text/html; charset=utf-8'); ?>

И HTML-мета:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
3 голосов
/ 02 ноября 2010
  1. utf8_decode $j_decoded = utf8_decode(json_decode($j_encoded)); РЕДАКТИРОВАТЬ или, если быть более точным $j_encoded = json_encode($j_encoded); $j_decoded = json_decode($j_encoded); нет необходимости в en / decoding utf8
  2. <meta charset="utf-8" />
0 голосов
/ 16 мая 2019

Для меня оба метода

<?php

header('Content-Type: text/html; charset=utf-8');

echo json_encode($YourData, \JSON_UNESCAPED_UNICODE);
0 голосов
/ 26 июля 2017

Работа для меня:)

function jsonEncodeArray( $array ){
    array_walk_recursive( $array, function(&$item) { 
       $item = utf8_encode( $item ); 
    });
    return json_encode( $array );
}
0 голосов
/ 09 октября 2016

если вы получили ошибку «неожиданный символ», вам следует проверить, есть ли спецификация (маркер порядка байтов, сохраненный в вашем файле utf-8 json. Вы можете удалить первый символ или сохранить, если без спецификации.

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