我正在尝试使用 OpenCSV
库编写一个简单的 CSVWriter
代码,但遇到了一个奇怪的问题。
Code:
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();
}
}
Expected Output:
一个|“两个”|“三个”|“四个”
Real Output:
一个|""两个""|""三个""|""四个""
正如我们所见,两个、三个和四个周围有双引号,但在输出中双引号重复。
我不想要这个,已经尝试了几个选项和 CSVWriter
类的构造函数,但无法解决这个问题。
有人遇到过类似的问题或知道出路吗?
谢谢
最佳答案
得到它的工作,下面的构造函数工作:
CSVWriter writer = new CSVWriter(new FileWriter("C:/test.csv"), '|', CSVWriter.NO_QUOTE_CHARACTER, CSVWriter.NO_ESCAPE_CHARACTER);
原因我看到 CSVWriter
默认将 "
视为 Escape Character,因此如果它出现在 String 中,它将尝试使用DEFAULT_ESCAPE_CHARACTER
Escape那个"
,它只是"
本身。
通过传递 CSVWriter.NO_ESCAPE_CHARACTER
,Writer 将无需担心检查Escapes 之间是否需要任何内容。
关于java - 使用 OpenCSV 写入 CSV 文件时双引号重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36752893/