Элементы массива, содержащие специальные символы, преобразуются в пустые строки при кодировании массива с помощью json_encode:
$arr = array ( "funds" => "ComStage STOXX®Europe 600 Techn NR ETF", "time"=>....); $json = json_encode($arr);
После кодирования JSON элемент [funds] имеет значение NULL. Это происходит только со специальными символами (авторскими правами, торговыми марками и т. Д.), Такими как «ComStage STOXX®Europe 600 Techn NR ETF».
Какие-либо предложения?
благодаря
ОБНОВЛЕНИЕ: Это решение проблемы до заполнения массива (все имена берутся из db):
$mysqli->query("SET NAMES 'utf8'");
Ваш вход должен быть закодирован как UTF-8 или ISO-8859-1.
http://www.php.net/manual/en/function.json-encode.php
Потому что, если вы попытаетесь преобразовать массив не-utf8 символов, вы получите 0 в качестве возвращаемого значения.
В руководстве для json_encode указано следующее:
Все строковые данные должны кодироваться в кодировке UTF-8.
Таким образом, попробуйте array_map
ping utf8_encode()
в ваш массив, прежде чем вы его кодируете:
$arr = array_map('utf8_encode', $arr); $json = json_encode($arr); // {"funds":"ComStage STOXX\u00c2\u00aeEurope 600 Techn NR ETF"}
Для справки рассмотрим различия между тремя примерами этой скрипки . Первый не использует кодировку символов, второй использует htmlentities
а третий использует utf8_encode
– все они возвращают разные результаты.
Для согласованности вы должны использовать utf8_encode()
.
Документы
вы должны использовать этот код:
$json = json_encode(array_map('utf8_encode', $arr))
Функция array_map преобразует специальные символы в стандарт UTF8
Для меня это работает так:
# Creating the ARRAY from Result. $array=array(); while($row = $result->fetch_array(MYSQL_ASSOC)) { # Converting each column to UTF8 $row = array_map('utf8_encode', $row); array_push($array,$row); } json_encode($array);
1. mysql_set_charset('utf8');
// установите эту строку поверх вашей страницы, в которой вы используете json.
latin1_swedish_ci
». вы должны добавить charset = UTF-8 в метатег и использовать json_encode для специальных символов
$json = json_encode($arr);
Функция json_encode преобразует специальные символы в стандарт UTF8