2013-03-26 1 views
0

доступ к базе Yummly рецептов в моем Android приложение с использованием HTML запрос:Yummly API возвращает странные символы в ответ JSON (Android)

http://api.yummly.com/v1/api/recipes?_app_id=MY-APP-ID_app_key=MY-APP-KEY&q=KEYWORD 

Хотя их документации говорится, что запросы GET возвращаются в Формат UTF-8, я нахожу некоторые странные символы в коде, например: Pots de Creme a l’Orange.

Проблема не ограничивается моим Android-приложением, но то же самое отображается в браузере Chrome. Как ни странно, когда я попытался открыть его в Internet Explorer, оказалось, что все в порядке: Pots de Creme a l’Orange, но были и другие вещи, такие как crème fraĂ®che, который иногда появляется в Chrome как Crème Fraîche, а иногда и правильно, как Crème Fraîche.

В чем разница между браузерами, которые заставляют их интерпретировать ответ по-разному? И что еще более важно, что можно сделать в Android/Java, чтобы устранить эту проблему? У тебя есть идеи?

В Android я использую HttpGet для извлечения данных с сервера, а затем передаю его в JSONObject.

+0

ли вы убедитесь, что переменная строка хранения ответа также UTF-8 закодированные? –

+0

Я не очень точно это понял, однако я последовал одному из советов по StackOverflow и поместил 'BufferedReader reader = new BufferedReader (новый InputStreamReader (контент,« UTF-8 »)).'. С другой стороны, проблема существует и в веб-браузерах, поэтому я не думаю, что код Java может что-то сделать, потому что проблема существует, вероятно, раньше. –

ответ

0

Я работаю для Yummly. Была несогласованность в том, как мы справляемся с этими вещами, но теперь это должно быть исправлено.

В порядке разъяснения &; синтаксис - это объекты SGML/XML/HTML, которые используются для выхода из определенных символов. См. Например, here. Для пользователей большинства браузеров, содержит ли документ & или & amp; не имеет значения, и поэтому мы недостаточно тщательно их нормализуем. Но для такого приложения, как ваше, очевидно, что оно действительно имеет значение, и мы добавили более полную нормализацию. Все, что вы получаете от API, не должно быть UTF8 без каких-либо объектов HTML.

Просто для справки, Apache Commons Lang имеет удобную утилиту Java для этого типа вещи

+0

Спасибо, проблема, кажется, решена, и теперь все выглядит хорошо в моем приложении :) –