2013-03-26 82 views
0

我訪問Yummly數據庫使用HTML查詢在我的Android應用程序的食譜:Yummly API的JSON響應返回奇怪的字符(安卓)

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編碼? – 2013-03-26 18:06:28

+0

我沒有真正確切地說過,但是我遵循了StackOverflow的一個建議,並且把'BufferedReader reader = new BufferedReader(new InputStreamReader(content,「UTF-8」));''。另一方面,這個問題也存在於Web瀏覽器中,所以我不認爲Java代碼可以做任何事情,因爲我可能早些時候存在這個問題。 – 2013-03-26 18:16:16

回答

0

我爲Yummly工作。我們處理這些事情的方式不一致,但現在應該修復。

作爲解釋,&;語法是用於轉義某些字符的SGML/XML/HTML實體。例如,請參閱here。對於大多數瀏覽器的用戶,無論文檔是否包含&或& amp;沒有區別,所以我們沒有足夠的正常化它們。但對於像你這樣的應用程序,顯然它確實有所作爲,我們已經添加了更加徹底的標準化。沒有任何HTML實體,您從API獲得的所有內容都不應該是UTF8。

僅供參考,Apache Commons Lang有這種類型的事情一個方便的Java實用程序

+0

謝謝,問題似乎解決了,現在在我的應用程序中一切看起來不錯:) – 2013-03-28 17:59:04