我正在使用supercscv来编写utf-8编码的csv。 它生成一个普通文件,但excel不会将其识别为utf-8,因为它很笨,没有bom标记就会丢失,所以当用excel打开时,任何特殊字符都会被破坏。
有没有办法将文件写成UTF-8,BOM与supercsv? 我找不到了。
由于
答案 0 :(得分:8)
因为supercsv可能包装了一个作家:
Writer writer = new OutputStreamWriter(out, StandardCharsets.UTF_8);
writer.write('\uFEFF'); // BOM for UTF-*
... new BeanWriter(writer, CsvPreference.STANDARD_PREFERENCE);
答案 1 :(得分:0)
根据我的经验,MS Excel始终在默认的MS Office字符集中打开csv文件。就我而言,它始终是Windows 1252(西班牙),即使不是Windows机器(MS Office for OSX)。处理它的唯一方法是用这个字符集写入CSV文件。
byte[] csvFileBytes = dataObject.toCSVString().getBytes(Charset.forName("Windows-1252"));
MS Excel似乎从不使用其他字符集来打开CSV文件。您可以查看此帖子:Is it possible to force Excel recognize UTF-8 CSV files automatically?