2014-04-07 2 views
2

У меня есть обычная 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. enter image description here Это похоже на то, что JSON действительно.

Я застрял в этом какое-то время, есть ли способ исправить неверную строку UTF-8? если да, то как? :)

К сожалению, я не могу разделить API:/

Кроме того, я могу видеть, что Iconv довольно ресурсоемкий, есть, может быть, лучший способ? :)

+0

Если вы используете utf8_encode на выходе будет гарантировать правильное кодирование – Joni

+0

обновление мои оригинальные сообщения, я пытался что раньше, не работает либо :( – Jazerix

+0

Какую ошибку или вывод вы получаете, когда вы сделали это? – Joni

ответ

0

Я не знаю, если проблема @Jazerix заключается в следующем, я вещь, которая, вероятно, кто-то один и тот же вопрос:

Я получаю данные из базы данных MySQL в массив PHP. Я поставил столбцы в MySQL, как utf8_unicode_ci и я установить кодировку в PHP: $db->exec($sql, null, 'utf8');

я получаю ошибку

Syntax error, malformed JSON

Потому что у меня есть один столбец перечислимой в базе данных, и этот столбец не имеет UTF-8 кодирования. У меня был один из вариантов: 'Campaña', и это был ключевой символ '-'.

Надеюсь, это поможет кому-то.

Смежные вопросы