我正在編寫一個Android應用程序,在該應用程序中請求並接收帶有日語鍵值的JSON對象。我將我希望這些值的字符串如下:Android,日語和JSON
String myString = new String(myJSONObject.getString("key").getBytes("UTF8"), "UTF8");
然而,當我顯示此顯示爲無稽之談,如:
的鍵和值都存在和正確的。
這是爲什麼?
我正在編寫一個Android應用程序,在該應用程序中請求並接收帶有日語鍵值的JSON對象。我將我希望這些值的字符串如下:Android,日語和JSON
String myString = new String(myJSONObject.getString("key").getBytes("UTF8"), "UTF8");
然而,當我顯示此顯示爲無稽之談,如:
的鍵和值都存在和正確的。
這是爲什麼?
你得到正確的字符?什麼是HTTP請求的內容編碼?將它們輸出到日誌時它們是否正確?你必須弄清楚它是一個傳輸問題,編碼不匹配問題,還是隻是一個顯示問題。嘗試回答上述問題以縮小範圍。
你的答案已經死了,完整 - 這不僅足以解決我的問題,而且教會了我將來如何解決這些問題。謝謝。正如它發生的那樣,源編碼是西文拉丁語1,而'String myString = new String(myJSONObject.getString(「key」)。getBytes(「ISO-8859-1」),「UTF8」);'是我所需要的。 – SK9
很高興它的工作。如果可能,最好在服務器上設置正確的編碼(HTTP響應)。如果內容編碼是正確的,那麼HttpClient(或者你正在使用的)會正確解碼字符串,並且你不必在代碼中處理這些。 –
如果它沒有正確顯示日語,那麼這是因爲Java處於默認字體模式,您需要更新Java fontconfig.properties
文件,這需要放在運行庫的lib目錄中。我不確定這是否適用於Android,因爲我還沒有創建應用程序,但這是我爲常規Java開發所做的。
此外,檢查了這一點,它是德國人,但UTF-8依舊:decode string encoded in utf-8 format in android
爲什麼你使用'new String()'構造函數?你可能只是寫'String myString = myJSONObject.getString(「key」);'無論如何 - JSON從哪裏來? –
對。我先試了一下,然後在問題中試了一下。 – SK9
正在通過HTTP GET之後的輸入流讀取JSON。 – SK9