2013-06-22 75 views
0

我有一個JSON響應,我想要存儲在數據庫中並顯示在文本視圖或編輯文本中。這個json響應以UTF-8格式編碼。轉換並顯示UTF8編碼字符串

響應是財產以後像

"currencies": [[0,"RUR"," ",1,0],[1,"EUR","â¬",1.44,100],[2,"GBP","£",1.6,100],[3,"JPY","Â¥",0.0125,100],[4,"AUD","$",1.1,100]]} 

其中â¬,A£,A¥是貨幣符號。我必須解碼,然後顯示。這些符號是Unicode中的符號(傳輸爲UTF8)。我怎樣才能轉換這個編碼的符號。 Plz的幫助。

我試過,但它沒有工作:

byte[] b = stringSymbol.getBytes("UTF-8"); // â¬,£,Â¥ 
final String str = new String(b); 

回答

4

你展示文本與非貨幣符號......就好像你正在做的原文,然後編碼爲UTF-8,然後將其解碼爲它作爲ISO-8859-1。

這只是文字 - 之後你不需要做任何事情,你永遠不應該以這種破碎的格式看到它。如果必須將文本再次轉換爲字節,然後再轉換爲字符串,這意味着基本上你已經丟失了。

檢查返回JSON的HTTP響應的標頭 - 我懷疑你會發現它聲稱數據是ISO-8859-1而不是UTF-8。 實際編碼必須與標題中指定的編碼相匹配,否則最終會產生這種效應。

另一種可能性是,無論返回的JSON是否準確地爲您提供了數據,它知道這些數據,並且數據在上游中斷。您應該一步一步地跟蹤數據(假設您擁有鏈中的所有鏈接),直到您可以看到您最初遇到此破裂的位置。