繁体   English   中英

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

[英]Double Quotes getting duplicated while writing CSV file with OpenCSV

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

代码:

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();
    }
}

预期输出:

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

实际输出:

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

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

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

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

谢谢

得到它的工作,下面的构造函数工作:

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

原因我看到CSVWriter在默认情况下正在考虑"作为转义字符,因此如果它出现在字符串中,它将尝试使用DEFAULT_ESCAPE_CHARACTER转义那个" ,它不是"本身”。

通过传递CSVWriter.NO_ESCAPE_CHARACTER ,Writer 不会担心检查Escapes之间是否需要任何东西。

如果您正在使用com.opencsv.bean.StatefulBeanToCsv建造由com.opencsv.bean.StatefulBeanToCsvBuilder代替com.opencsv.CSVWriter ;

不能直接将选项设置为构造函数 params ,但您必须调用相应的方法来设置它: .withQuotechar().withEscapechar()

像这样:

StatefulBeanToCsvBuilder btcsvBuilder = new StatefulBeanToCsvBuilder(myOutputStreamWriter);
StatefulBeanToCsv btcsv = btcsvBuilder.withQuotechar(CSVWriter.NO_QUOTE_CHARACTER).withEscapechar(CSVWriter.NO_ESCAPE_CHARACTER).withMappingStrategy(myMapStrategy).withSeparator(',').build();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM