2010-07-09 35 views
5

我知道UTF文件有BOM確定有關其他編碼方式進行編碼,但什麼有 不知道怎樣猜測編碼。如何確定文本編碼

我是新的java程序員。 我已經編寫了使用UTF BOM來猜測UTF編碼的代碼。 但我有其他編碼問題。我如何猜測它們。

有人可以幫助我嗎? 在此先感謝。

回答

0

簡短的回答是:你不能。

即使在UTF-8,BOM是完全可選的,它通常建議不使用它,因爲許多應用程序無法正確處理它,只是顯示它,彷彿它是一個可打印字符。字節順序標記的最初目的是爲了說明UTF-16文件的字節順序。

這就是說,大多數處理Unicode的應用程序實現某種猜測算法。閱讀文件的開頭並查找特定的簽名。

0

如果你不知道的編碼和沒有任何指標(如BOM),它並不總是能夠準確地「猜」的編碼。有些指針可以給你提示。

例如,ISO-8859-1文件(通常)沒有任何字符爲0x00,但是一個UTF-16文件中有他們的負荷。

最常見的解決方案是讓用戶選擇的編碼,如果你不能檢測到它。

+1

包含中文文本的UTF-16文件實際上根本不會有很多0x00字節。 – 2010-07-09 12:46:43

4

此問題是several的一個副本previousones。至少有兩個Java庫試圖猜測編碼(但請記住,沒有辦法在100%的時間內正確猜測)。

當然,如果你知道的編碼將只有三個或四個選項中,你也許能夠寫出更準確的猜測算法。

+0

+1用於查找如此多的副本。 – 2013-02-21 02:27:39