我想写制表符分隔的utf8 excel文件。 我的PrintWriter看起来像这样:
Charset utf8Charset = Charset.forName("UTF-8");
OutputStreamWriter osw = new OutputStreamWriter(os, utf8Charset);
PrintWriter printWriter = new PrintWriter(new BufferedWriter(osw, BUFFER_SIZE));
所以看起来它必须在utf8中编写符号。 但是当我打开xls时,我会显示一些无效的字符:
好像是UTF8问题。所以我决定在写入任何信息之前将UTF8 BOM添加到文件中。然后excel告诉我这个:
但有趣的是 - 当我使用相同的方法(添加UTF8 BOM)来编写CSV文件(使用“,”分隔符)时,它运行良好。 我要感谢任何帮助,谢谢!
编辑: 我已经复制了这个bug但报告中有不同的信息(不同的列名)。无论如何这里是hex告诉我的
带有UTF8 BOM的文件:
和没有UTF8 BOM的同一文件:
似乎在添加UTF8 BOM之后,excel开始忽略制表符分隔符。我还是不知道该怎么做。