gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 04:29:02 24 4
gpt4 key购买 nike

我必须使用 Java 读取 CSV 文件,并且我正在使用 Super CSV 库来执行此操作。如果我使用文本编辑器(在 Windows 或 Linux 中)打开 CSV 文件,我可以看到如下行:

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

似乎包含“-”的单元格,在 Linux 上从 java 读取为“� - �”,在 Windows 上读取为“á - á”。我需要正确的表示,因为我必须进行比较。现在我正在初始化一个字符串变量=“\uFFFD -\uFFFD”(因为我在linux上开发),但是这段代码在windows上不起作用。

除了首先读取文件以检查字符(当前文件无法包含该字符)或根据操作系统初始化字符串(我将其作为临时解决方案实现)之外,还有其他解决方案吗?

最佳答案

您应该知道 CSV 文件实际采用的编码。

如果您在正确显示的文本编辑器中打开它,您应该在该编辑器中找出使用了哪种编码。 (例如,notepad++ 中的编码菜单项)。

比你在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 类有点棘手,因为它们隐式使用系统的默认字符编码。)

关于Java:Windows和Linux中的不同字符编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15092850/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com