java - ö CSV 文件创建中的字符编码问题

标签 java character-encoding fileutils apache-commons-io

我正在尝试从我的 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/

相关文章:

java - 将新节点插入 AVLTree 后根节点为空

java - 如何设置 JList 中文本的格式?

php - 字符在 mysql 中显示为乱码(希伯来语)

Java Apache Commons FileUTIL CopyDirectory 异常

Java FileUtils : remove specific line from file

java - 使用 Jackson 用数组(根 JSON 节点)填充 POJO

java - 使用通用接口(interface)和类

PHP 函数 mb_detect_encoding 严格模式

Python 使用 euc-kr 编码以意想不到的方式对(韩语)字符进行编码(编解码器、编码模块)

java - 如何知道客户端是否已经完成文件下载