使用 OpenCSV 写入 CSV 文件时双引号出现重复

Asi*_*sif 5 java opencsv

我正在尝试使用库编写一个简单的CSVWriter代码OpenCSV,但遇到了一个奇怪的问题。

代码:

public class Test {

    public static void main(String[] args) throws IOException {

       String[] header = {"ONE", "\"TWO\"", "\"THREE\"", "\"FOUR\""};

       CSVWriter writer = new CSVWriter(new FileWriter("C:/test.csv"), '|', CSVWriter.NO_QUOTE_CHARACTER);

       writer.writeNext(header);

       writer.flush();       
       writer.close();
    }
}
Run Code Online (Sandbox Code Playgroud)

预期输出:

ONE|"TWO"|"THREE"|"FOUR"

实际输出:

ONE|""TWO""|""THREE""|""FOUR""

正如我们所看到的,TWO、THREE 和 FOUR 周围有双引号,但在输出中双引号是重复的

我不想要这个,已经尝试了几个选项和CSVWriter类的构造函数,但无法解决这个问题。

有人遇到过类似的问题或知道出路吗?

谢谢

Asi*_*sif 2

让它工作起来,下面的构造函数工作了:

CSVWriter writer = new CSVWriter(new FileWriter("C:/test.csv"), '|', CSVWriter.NO_QUOTE_CHARACTER, CSVWriter.NO_ESCAPE_CHARACTER);
Run Code Online (Sandbox Code Playgroud)

我看到默认情况下CSVWriter被视为"转义字符的原因,因此如果它出现在字符串中,它将尝试转义除了它本身"之外DEFAULT_ESCAPE_CHARACTER什么都没有的东西"

通过传递,Writer 就不用担心检查EscapeCSVWriter.NO_ESCAPE_CHARACTER之间是否有任何需要的内容。