2013-02-26 30 views
1

我必須使用Java讀取CSV文件,並使用Super CSV庫進行操作。 如果我打開一個文本編輯器(無論是在Windows或Linux)的CSV文件,我可以看到一排這樣的:Java:Windows和Linux中的不同字符編碼

6;;07/01/1939;58;22;47;49;69;  -   ;  -   ;  -   ;  -   ;  -   ; 

,似乎含有細胞「 - 」,在Linux上從Java讀取作爲「 - 」,在窗口上顯示爲「á - á」。 我需要正確的表示形式,因爲我必須做一個比較。 現在我正在初始化一個字符串變量=「\ uFFFD - \ uFFFD」(因爲我在linux上開發),但是這個代碼在windows上不起作用。

任何解決方案都不同於先讀取文件來檢查字符(當前文件不能擁有它)或初始化基於OS的字符串(我將把它作爲臨時解決方案來實現)?

回答

2

你應該知道在哪個編碼CSV文件實際上是在。

如果您在正確顯示其文本編輯器打開它,你應該在編碼已使用該編輯器找到。 (例如記事本++中的編碼菜單項命名爲1)。

比你可以指定它時,它在Java中讀取它。

例如這裏使用UTF-8:

FileInputStream fis = new FileInputStream("test.txt"); 
InputStreamReader in = new InputStreamReader(fis, "UTF-8"); 

Scanner scanner = new Scanner(file, "UTF-8"); 

的問題可能是一個不同的默認字符集Windows和Linux上使用。

(參見:http://www.javapractices.com/topic/TopicAction.do?Id=42,其中指出:的的FileReader和FileWriter的類是有點棘手,因爲他們含蓄地使用系統的默認字符編碼

+0

非常感謝你。我使用「ISO-8859-1」,並完美地工作:) – Crisoberillo 2013-02-26 16:37:13

相關問題