Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:Windows和Linux中的不同字符编码_Java_Csv_Unicode_Character Encoding - Fatal编程技术网

Java:Windows和Linux中的不同字符编码

Java:Windows和Linux中的不同字符编码,java,csv,unicode,character-encoding,Java,Csv,Unicode,Character Encoding,我必须用Java读取CSV文件,我正在用超级CSV库读取。 如果我用文本编辑器(在windows或linux中)打开CSV文件,我会看到这样一行: 6;;07/01/1939;58;22;47;49;69;  -   ;  -   ;  -   ;  -   ;  -   ; linux上似乎包含“-”的单元格从java读取为� - � " 窗户上写着“á-á”。 我需要正确的表示,因为我必须进行比较。 现在我正在初始化一个字符串变量=“\uFFFD-\uFFFD”(因为我是在linux上开发

我必须用Java读取CSV文件,我正在用超级CSV库读取。 如果我用文本编辑器(在windows或linux中)打开CSV文件,我会看到这样一行:

6;;07/01/1939;58;22;47;49;69;  -   ;  -   ;  -   ;  -   ;  -   ;
linux上似乎包含“-”的单元格从java读取为� - � " 窗户上写着“á-á”。 我需要正确的表示,因为我必须进行比较。 现在我正在初始化一个字符串变量=“\uFFFD-\uFFFD”(因为我是在linux上开发的),但这段代码在windows上不起作用


除了先读取文件以检查字符(当前文件可能没有字符)或基于操作系统初始化字符串(我将把它作为临时解决方案来实现)之外,还有其他解决方案吗?

您应该知道CSV文件的实际编码方式

如果您在正确显示它的文本编辑器中打开它,您应该在该编辑器中找到使用的编码(例如,记事本++中的“编码”菜单项)

在java中读取时可以指定它

以下是utf-8的示例:

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

问题可能是windows和linux上使用了不同的默认字符集

(请参阅:,其中说明:FileReader和FileWriter类有点棘手,因为它们隐式使用系统的默认字符编码。

非常感谢。我使用了“ISO-8859-1”,工作非常完美:)
Scanner scanner = new Scanner(file, "UTF-8");