2010-09-10 61 views
1

我們的應用程序接收來自我們用戶的文件,如果它們屬於我們支持的編碼類型(即UTF-8,Shift-JIS,EUC-JP),那麼這些文件必須經過驗證,並且一旦該文件得到驗證,還需要將該文件保存在我們的系統中,並將其編碼保存爲元數據。如何檢測文件的字符編碼?

目前,我們使用JCharDet(這是一個mozilla字符檢測器的java端口),但有一些Shift-JIS字符,它似乎無法檢測到有效的Shift-JIS字符。

任何想法我們還可以使用什麼?

+1

[Java:如何確定流的正確字符集編碼]的可能重複(http://stackoverflow.com/questions/499010/java-how-to-determine-the-correct-charset-encoding-of -a-stream) – 2010-09-10 12:22:52

+0

應用程序如何接收文件?如果是通過HTTP,這應該存儲在MIME頭文件中。 – 2010-09-10 12:26:44

+0

@彼得:不,當然不是。 mime頭只代表HTTP請求正文的編碼,而不是文件的原始編碼。 – BalusC 2010-09-10 14:35:59

回答

0

Apache Tika是一個內容分析工具包,主要用於確定文件類型 - 與編碼方案相反 - 但它確實返回文本文件類型的內容編碼信息。我不知道它的算法是否像JCharDet一樣先進,但它可能值得一試...

0

ICU4J的CharsetDetector會幫助你。

​​

順便說一句,什麼樣的角色造成了錯誤,造成了什麼樣的錯誤?我認爲ICU4J會有同樣的問題,這取決於字符和錯誤。