2014-09-14 3 views
0

Я получаю обратно ASCII-строку (созданную программой C), форматированную JSON. Проблема в том, что PHP получает 5 ошибок при декодировании (искаженный UTF-8). В строке - 215 символов. Подстрока:JSON_DECODE() с неправильным символом

1280ï544 

Как с этим справиться, чтобы не получить ошибку декодирования? (Я хочу отфильтровать/скрыть ВСЕ такие символы, а не только один экземпляр).

Мне кажется, что я должен это знать, но я кодировал 20 часов подряд и нуждался в некоторой помощи.

ответ

0

ASCII не содержит таких символов, как, например, ASCII. В руководстве по PHP указано:

Эта функция работает только с закодированными строками UTF-8.

Это означает, что вы должны преобразовать строку в UTF-8. Вероятно, ваша текущая строка находится в ISO-8859-1, и в этом случае вы можете преобразовать свою строку в UTF-8 с помощью utf8-encode, прежде чем запускать ее через json_decode.

+0

Когда я это сделаю, я получаю синтаксическую ошибку. Кодовая последовательность в тестовой программе: $ r = utf8_encode ($ results); $ А = json_decode ($ г, 1); Это возвращает ошибку # 4 – mlewis54

+0

Синтаксис JSON? Тогда ваш исходный вход может быть другой кодировкой. – jornane

+0

Я запустил JSON через json lint, и он проверяет. Проблема в том, что PHP обрабатывает строку как проблему. Я уверен, что это связано с кодировкой, просто не уверен, что мне нужно делать, когда я вернусь с сервера обратно. Я его кодирую, декодирую или декодирую/кодирую. Две вещи, которые я знаю, это то, что строка является прямой ASCII и что она является надлежащим форматом JSON. Данные были получены для возврата ко мне из поля MySQL (UTF-8). – mlewis54

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