我正在尝试从我的 Java 代码创建一个 CSV 文件。
File file = File.createTempFile("DummyReport", ".csv");
SomeListofObjects items = getSomeList();
FileUtils.write(file, "ID;CREATION;" + System.lineSeparator());
FileUtils.writeLines(file, activities.getItems(), true);
return file;
我遇到了一些特殊字符的问题。
当我调试代码时,我发现我有一个字符为“ö”。但是在生成的 csv 文件中,它出现了奇怪的“ö”。
我们可以在 FileUtile 或 File 中设置它吗?有人可以帮我解决这个问题吗?
最佳答案
首先检查您使用的文本查看器是否能正确显示您的输出。如果不是,问题可能出在您的系统编码上。
FileUtils.write(file, string)
使用默认的系统编码,在您的系统中似乎是 8bit。然而,“ö”字符被编码为两个字节,结果为“ö.”。
改为使用 FileUtils.write(File file, CharSequence data, String encoding)
,并使用适当的编码:
- ISO 8859-1(8 位标准,Latin-1)
- CP1252(8 位专有,Windows 默认,扩展 Latin 1)
- MacRoman(8 位专有,Apple 默认)
- UTF-8(16 位标准,Linux 默认)
- Latin-15(并非始终支持)
我的建议是使用 FileUtils.write(file, string, "UTF-8")
。
关于java - ö CSV 文件创建中的字符编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23783165/