我正在使用supercsv编写一个UTF-8编码的csv文件。 它产生了一个正常的文件,但是Excel不能识别它的UTF-8编码,因为它很傻,Excel没有带有BOM标记的情况下会丢失,所以在Excel中打开时任何特殊字符都会损坏。
有没有办法使用supercsv编写一个带有BOM的UTF-8文件? 我找不到。
谢谢
我正在使用supercsv编写一个UTF-8编码的csv文件。 它产生了一个正常的文件,但是Excel不能识别它的UTF-8编码,因为它很傻,Excel没有带有BOM标记的情况下会丢失,所以在Excel中打开时任何特殊字符都会损坏。
有没有办法使用supercsv编写一个带有BOM的UTF-8文件? 我找不到。
谢谢
由于supercsv可能会包装一个Writer:
Writer writer = new OutputStreamWriter(out, StandardCharsets.UTF_8);
writer.write('\uFEFF'); // BOM for UTF-*
... new BeanWriter(writer, CsvPreference.STANDARD_PREFERENCE);
byte[] csvFileBytes = dataObject.toCSVString().getBytes(Charset.forName("Windows-1252"));
MS Excel似乎从不使用其他字符集打开CSV文件。您可以查看此帖子:是否可能强制Excel自动识别UTF-8 CSV文件?
OutputStreamWriter o = new OutputStreamWriter(out); // BOM o.write('\uFEFF'); writer = new CsvBeanWriter(o, CsvPreference.EXCEL_NORTH_EUROPE_PREFERENCE);
- allaf