2016-02-15 2 views
1

Я создал один файл JSON через PowerShell и поместил его на сервисный.JSON.parse: неожиданный символ в строке 1 столбец 1 данных JSON только в Firefox

Когда я доступ к этому файлу JOSN через $ .getJSON он отлично работает в Крома и IE браузером, но когда я доступ к этому JSON файл в Firefox я получил ошибку

JSON.parse: неожиданный символ в строка 1 колонка 1 из данных JSON

Заголовок:

enter image description here

Ответ:

enter image description here

Какой должна быть проблема и как это исправить в Firefox?

+0

http://stackoverflow.com/questions/25743994/syntaxerror-json-parse-unexpected-character-at-line-1-column-1-of-the-json-dat –

+0

Очевидно, что проблема идентификации набора символов , сервер, похоже, отвечает UTF-16. Что такое заголовок 'Content-Type' в ответе? –

+0

@Rino в этом вопросе проблемы были относительно PHP. И я пробовал это решение, но не повезло. –

ответ

1

Вы сказали, что сервер отправляет этот JSON обратно с Content-Type: text/plain. Данные, как представляется, в UTF-16 (возможно, что это основано на скриншоте), но набор символов по умолчанию для text/plain является us-ascii (см §4.1.2 из RFC2046):

4.1.2. Charset Параметр

Критическим параметром, который может быть указан в поле Content-Type для «текстовых/простых» данных, является набор символов. Это задается с помощью параметра «кодировок», как в:

Content-type: text/plain; charset=iso-8859-1 

В отличии от некоторых других значений параметров, значение параметра кодировки не чувствительно к регистру. Набор символов по умолчанию, который должен быть принят в отсутствие параметра charset, является US-ASCII.

Таким образом, вам необходимо изменить ответ от сервера таким образом, чтобы он правильно идентифицировал используемый набор символов, например. Content-Type: text/plain; charset=UTF-16 (очевидно, чтобы сначала убедиться, что это, по сути, кодировка ресурса).


Замечу лишь, что, от того, что я могу сделать из JSON, это выглядит, как это в основном в западном сценарии. Если это так, UTF-16 является необычным и неэффективным выбором, вам, вероятно, будет лучше работать с UTF-8. Но у меня есть только небольшой фрагмент текста для работы.

+0

Hi T.J. Спасибо за ответ. У меня есть вопрос. Не могли бы вы заглянуть в нее. мне все еще нужно менять ответ от сервера? и он также работает в Chrome и IE. Проблема возникает только в Firefox. –

+0

@ DOM: Yup. Если сервер указывал кодировку, она была бы в строке заголовка 'Content-Type'. (Для сравнения посмотрите на «Content-Type» SO с этой страницей.) Поскольку это не так, Firefox, похоже, использует значение по умолчанию в соответствии с RFC (US-ASCII), в то время как IE, похоже, видит спецификацию первые два байта ответа) и переключиться на обработку UTF-16. –

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