簡體   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