2010-11-19 54 views
2

我正面臨編碼問題。如何檢查java中的編碼?

例如,我有一條XML格式的消息,其格式編碼爲「UTF-8」。

<message> 
     <product_name>apple</product_name> 
     <price>1.3</price> 
     <product_name>orange</product_name> 
     <price>1.2</price> 
     ....... 
    </message> 

現在,這一消息支持多國語言:

  • 中國傳統中文(Big5)
  • 簡單的中國(GB),
  • 英語(UTF-8)

    它只會改變特定字段中的編碼。
    例如(中國傳統),

    蘋果 1.3 橙 1.2 .......

    只有 「蘋果」 和 「橙」 正在使用BIG5,"<product_name>""</product_name>"是仍然使用utf-8。
    <price>1.3</price><price>1.2</price>正在使用utf-8。

我怎麼知道哪個單詞使用不同的編碼?

回答

2

看起來像誰在提供XML是提供不正確的XML。他們應該使用一致的編碼。

http://sourceforge.net/projects/jchardet/files/是一個不錯的啓發式字符集檢測器。 這是Firefox中使用的端口,用於檢測內容類型或BOM中缺少字符集的頁面的編碼。

如果您無法讓提供程序修復其輸出,您可以使用它來嘗試找出格式不正確的XML文件中的子字符串的編碼。

1

您應該在一個xml文件中只使用一種編碼。在UTF_8編碼中有big5的字符對應。

0

因爲我無法讓提供者修復輸出,所以我應該自己處理它,並且我不能在此項目中使用擴展庫。

我只可以解決這樣的,

String str = new String(big5String.getByte("UTF-8")); 

顯示之前的消息。

+0

這不是一個好的解決方案,但我只知道這種方式來解決問題。 有沒有人有其他更好的解決方案? – Roy 2010-11-19 03:44:41