2013-11-19 9 views
0

Я разобран JSON следующим образом:Дополнительный символ в формате JSON

URL urlData = new URL("http://example.com/file.php"); 
     BufferedReader reader = new BufferedReader(new InputStreamReader(
       urlData.openConnection().getInputStream(), "UTF-8")); 
     String showtimes = reader.readLine(); 
     System.out.println(showtimes); 

Но в начале строки вставляется в ?:

{ "Дата": "19",» error ": false, ...

Как я понимаю, эта проблема возникает из-за кодирования. Если удалить "UTF-8", строка выглядит следующим образом:

п »ї { "Дата": "19", "ошибка": ложь, ...

Как может Я решаю эту проблему?

Спасибо.

ответ

0

Проблема в том, что загружаемая страница не кодируется в UTF-8. Узнайте, какую кодировку он использует и использует эту кодировку в своем приложении (или конвертирует ее в UTF-8).

0

Я не могу думать о каких-либо проблемах с кодировкой, которые могли бы произвести этот вывод.

Однако это может быть спроектировано так, чтобы противостоять ошибке безопасности в некоторых (более старых) версиях браузера. Некоторые браузеры позволили определить сеттеры/добытчиками для общих Object и Array типов - это означает, что если вы включили файл JSON в качестве сценария JavaScript:

... то сеттеры/добытчиками будет называться , и вы можете извлечь данные - в нарушение политики перекрестного происхождения.

Современный браузер не будет иметь этой проблемы, но некоторые сайты по-прежнему защищают от этого, префикс их данных JSON с известной строкой (чтобы нарушить оценку JavaScript).

Если это так, то действительно должен быть задокументирован в своих документах API.

(ссылка relevant Mozilla bug)

0

Похоже, вы пытаетесь сразу прочитать из HTTP URL. К сожалению, если вы не хотите писать собственный клиентский парсер HTTP, это вызовет проблемы. Моя рекомендация - использовать стороннюю библиотеку, специально предназначенную для чтения из HTTP-адресов. Поскольку кодирование является частью ответа HTTP, оно будет обрабатывать надлежащим образом декодирование ответа от сервера для вас.

http://hc.apache.org/httpcomponents-client-ga/

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