2016-04-20 50 views
1

我正在嘗試使用OpenCSV庫編寫一個簡單的CSVWriter代碼,但存在一個奇怪的問題。使用OpenCSV編寫CSV文件時出現重複的雙引號

代碼:

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""

正如我們可以看到有兩個周邊,三,四雙引號,但在輸出的雙引號複製

我不想這個,已經嘗試了幾個選項和CSVWriter類的構造函數,但無法對此進行排序。

任何人都面臨類似的問題或知道一個出路?

感謝

+0

在此處檢查http://stackoverflow.com/questions/15366954/prevent-opencsv-from-writing-quotes-to-csv-file – haifzhan

+0

完成!感謝您的建議@RC。 – Asif

回答

1

得到它的工作,下面的構造工作:

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

原因我看到CSVWriter被默認考慮"作爲轉義字符因此如果它有字符串,它會試圖Escape"DEFAULT_ESCAPE_CHARACTER這不是什麼,但"本身。

通過傳遞CSVWriter.NO_ESCAPE_CHARACTER,作家會不會擔心,如果有什麼轉義之間是一個需要檢查。