2011-08-17 35 views
1

我正在編寫一個Android應用程序,在該應用程序中請求並接收帶有日語鍵值的JSON對象。我將我希望這些值的字符串如下:Android,日語和JSON

String myString = new String(myJSONObject.getString("key").getBytes("UTF8"), "UTF8"); 

然而,當我顯示此顯示爲無稽之談,如:

enter image description here

的鍵和值都存在和正確的。

這是爲什麼?

+1

爲什麼你使用'new String()'構造函數?你可能只是寫'String myString = myJSONObject.getString(「key」);'無論如何 - JSON從哪裏來? –

+0

對。我先試了一下,然後在問題中試了一下。 – SK9

+0

正在通過HTTP GET之後的輸入流讀取JSON。 – SK9

回答

2

你得到正確的字符?什麼是HTTP請求的內容編碼?將它們輸出到日誌時它們是否正確?你必須弄清楚它是一個傳輸問題,編碼不匹配問題,還是隻是一個顯示問題。嘗試回答上述問題以縮小範圍。

+1

你的答案已經死了,完整 - 這不僅足以解決我的問題,而且教會了我將來如何解決這些問題。謝謝。正如它發生的那樣,源編碼是西文拉丁語1,而'String myString = new String(myJSONObject.getString(「key」)。getBytes(「ISO-8859-1」),「UTF8」);'是我所需要的。 – SK9

+1

很高興它的工作。如果可能,最好在服務器上設置正確的編碼(HTTP響應)。如果內容編碼是正確的,那麼HttpClient(或者你正在使用的)會正確解碼字符串,並且你不必在代碼中處理這些。 –

1

如果它沒有正確顯示日語,那麼這是因爲Java處於默認字體模式,您需要更新Java fontconfig.properties文件,這需要放在運行庫的lib目錄中。我不確定這是否適用於Android,因爲我還沒有創建應用程序,但這是我爲常規Java開發所做的。

此外,檢查了這一點,它是德國人,但UTF-8依舊:decode string encoded in utf-8 format in android

+0

謝謝帕特里克。這不是這個 - 如果我在代碼中引入我自己的日語字符串,它顯示正常。我做了一些Google搜索,我知道Android中沒有'fontconfig'(儘管在其他Java版本中)。 – SK9

+0

我發現這個http://stackoverflow.com/questions/5318413/android-java-utf-8-json-question它似乎是說,它是你的服務器響應,提供的JSON不在正確的字符集。 –

+0

謝謝。我也想知道。我試圖在服務器人起牀之前儘可能地弄清楚這一點。 – SK9

0

嘗試"UTF-8"代替"UTF8"當你得到同樣的JSON字符串與瀏覽器

+0

謝謝。我試過這個,它沒有幫助。 – SK9