2013-06-04 35 views

回答

2

當從JSON文檔讀取字符串時,請確保正確解碼JSON文件。也就是說,知道用於創建JSON文件的字符編碼,並在解碼文件時使用相同的編碼。

假設你已經有一個InputStream讀取您的JSON文件,你可以使用這樣的事情:

private static final Charset JSON_CHARSET = Charset.forName("UTF-8"); 

private JSONObject loadJsonObject(InputStream in) throws JSONException, IOException { 
    InputStreamReader reader = new InputStreamReader(in, JSON_CHARSET); 
    StringWriter writer = new StringWriter(); 
    copy(reader, writer); 
    return new JSONObject(writer.toString()); 
} 

private static void copy(Reader reader, Writer writer) throws IOException { 
    try { 
     char[] buffer = new char[512]; 

     while (true) { 
      int nChars = reader.read(buffer); 
      if (nChars < 0) { 
       break; 
      } 

      writer.write(buffer, 0, nChars); 
     } 
    } finally { 
     reader.close(); 
     writer.close(); 
    } 
} 

必要時使用其它字符集不是UTF-8。

+0

我在輸入流使用iso-8859-1,我需要改變它的UTF-8? – stackoverflow

+0

使用編碼文件的字符編碼。如果你知道它是iso-8859-1那就用它! – devconsole

+0

我有使用utf 8的工作,謝謝 – stackoverflow

0

插入專用的strings.xml的RES /值-XXX下/

+0

你也會做出詳細的回答,請 – stackoverflow

0

我發現我有我的佈局文件的XML屬性更改爲UTF-16得到某些擴展字符正確顯示。

<?xml version="1.0" encoding="UTF-16"?> 
+0

這是行不通的 – stackoverflow

+0

我試圖「ISO-8859-1」在輸入流 – stackoverflow

2

如何使用Charset.forName("UTF-8").encode(myString)?當然,字符串應該存儲在外部資源string.xml中,所以mystring應該是例如。

String mystring = getString(R.string.myStringResource); 
+0

我不明白,我怎麼能應用這個? – stackoverflow

+1

我現在可以看到它已經解決了,因爲你可以看到人們在這裏非常有幫助,但它有助於更​​多地分析你的問題(例如,我不知道它是關於解析JSON的 - 我可以提供更合適的代碼片段)。 。我很高興我能幫上忙! –

+0

投票給你的幫助和你的答案,非常感謝 – stackoverflow