У меня есть PHP-скрипт, который работает с различными языками. К сожалению, всякий раз, когда я пытаюсь использовать json_encode
, любой вывод Unicode преобразуется в шестнадцатеричные объекты. Это ожидаемое поведение? Есть ли способ преобразовать вывод в символы UTF-8?
Вот пример того, что я вижу:
ВХОД
echo $text;
ВЫВОД
База данни грешка.
ВХОД
json_encode($text);
ВЫВОД
"\u0411\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u0438 \u0433\u0440\u0435\u0448\u043a\u0430."
JSON_UNESCAPED_UNICODE доступен в PHP версии 5.4 или новее.
Следующий код для версии 5.3.
ОБНОВЛЕНО
html_entity_decode
немного эффективнее, чемpack
+mb_convert_encoding
.(*SKIP)(*FAIL)
пропускает обратную косую черту и указанные символы с помощьюJSON_HEX_*
флагов.источник
\\
. Более новая версия захватывает\\
с более высоким приоритетом, чем\u
.Вам нравится устанавливать кодировку и unesceded Unicode
источник
Одним из решений является сначала кодировать данные, а затем декодировать их в том же файле:
источник
Вот мое комбинированное решение для различных версий PHP.
В моей компании мы работаем с разными серверами с разными версиями PHP, поэтому мне пришлось искать решение, подходящее для всех.
Кредиты должны идти к Марко Гаси и Абу . Решение для PHP> = 5.4 представлено в документации по json_encode.
источник
Функция raw_json_encode () выше не решить мне проблему (по какой - то причине, функция обратного вызова подняла ошибку на моем сервере PHP 5.2.5).
Но это другое решение действительно сработало.
https://www.experts-exchange.com/questions/28628085/json-encode-fails-with-special-characters.html
Кредиты должны идти к Марко Гаси . Я просто вызываю его функцию вместо вызова json_encode ():
источник
источник
Так как вы спросили:
Другое решение - использовать utf8_encode .
Это закодирует вашу строку в
UTF-8
.например
источник
json_encode()
работает только с данными UTF-8 закодирован.может быть, вы можете получить ответ, чтобы конвертировать его здесь: кириллица-символы-в-phps-json-encode
источник