[英]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.