У меня есть обычная JSON api для моей школы, поэтому я могу посмотреть домашнее задание. Назовем строку результата $ result. К сожалению, похоже, что UTF-8, с которым я возвращаюсь, искажен. Запуск mb_check_encoding подтверждает, что строка кодируется в кодировке UTF-8, однако я не могу декодировать строку JSON.Фиксация неправильной строки UTF-8
Когда я использую json_decode на моей строки, что возвращается NULL и json_last_error() дает мне ошибку «JSON_ERROR_UTF8» = "Искаженные UTF-8 символов, возможно, неправильно закодирован.
с помощью iconv("UTF-8", "UTF-8//TRANSLIT", $result)
бросает PHP уведомление:
iconv() : Detected an illegal character in input string in C:\wamp\www\Tietgen\homework.php
Использование iconv("UTF-8", "UTF-8//IGNORE", $result)
вместо этого, дает мне результат JSON назад, однако он отрезают в середине (предположительно, в той же точке, где TRANSLIT является выявления незаконного характера), что дает мне ошибку JSON
Unexpected control character found
Doing json_decode(utf8_encode($result))
возвращается NULL
Aswell, и дает мне эту ошибку JSON:
Syntax error, malformed JSON
echoing utf8_encode ($ result) также обрезается.
У меня есть программа, работающая на моем компьютере под названием JSON Viewer. Когда я вставляю JSON из исходного источника (api, я обращаюсь к нему), он отлично работает в JSON Viewer. Это похоже на то, что JSON действительно.
Я застрял в этом какое-то время, есть ли способ исправить неверную строку UTF-8? если да, то как? :)
К сожалению, я не могу разделить API:/
Кроме того, я могу видеть, что Iconv довольно ресурсоемкий, есть, может быть, лучший способ? :)
Если вы используете utf8_encode на выходе будет гарантировать правильное кодирование – Joni
обновление мои оригинальные сообщения, я пытался что раньше, не работает либо :( – Jazerix
Какую ошибку или вывод вы получаете, когда вы сделали это? – Joni