Bootstrap

java csv 设置格式,在java和csv文件中设置UTF-8

I am using this code for add Persian words to a csv file via OpenCSV:

String[] entries="\u0645 \u062E\u062F\u0627".split("#");

try{

CSVWriter writer=new CSVWriter(new OutputStreamWriter(new FileOutputStream("C:\\test.csv"), "UTF-8"));

writer.writeNext(entries);

writer.close();

}

catch(IOException ioe){

ioe.printStackTrace();

}

When I open the resulting csv file, in Excel, it contains "ứỶờịỆ". Other programs such as notepad.exe don't have this problem, but all of my users are using MS Excel.

Replacing OpenCSV with SuperCSV does not solve this problem.

When I typed Persian characters into csv file manually, I don't have any problems.

解决方案

Unfortunately, CSV is a very ad hoc format with no metadata and no real standard that would mandate a flexible encoding. As long as you use CSV, you can't reliably use any characters outside of ASCII.

Your alternatives:

Write to XML (which does have encoding metadata if you do it right) and have the users import the XML into Excel.

Use Apache POI to create actual Excel documents.

;