Java:Windows和Linux中的不同字符编码
我必须用Java读取CSV文件,我正在用超级CSV库读取。 如果我用文本编辑器(在windows或linux中)打开CSV文件,我会看到这样一行: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上开发
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");