最近遇到一个问题,在日文环境下生成csv文件,编码格式设置为utf-8,并且在文件开头写入了EF BB BF这三个字节。该文件内容包含英文和日文,问题是在英文操作系统下用excel打开显示正常,但是在日文操作系统下却显示为乱码。
请各位大大赐教,感激不及。
[b]问题补充:[/b]
用utf-16编码的话的确没问题,但是如果还是要用utf-8编码呢,公司不同意采用utf-16编码格式。。。无奈
解决过这个问题,明天给你上代码
[code="java"] private final static String DEFAULT_CHARSET = "UTF-16LE";
private final static byte[] BOM_UTF16 = new byte[]{(byte)0xFF,(byte)0xFE};
public static InputStream getInputStream(String content) {
InputStream is = null;
try {
byte[] contentByte = content.getBytes(DEFAULT_CHARSET);
byte[] allData = new byte[BOM_UTF16.length + contentByte.length];
System.arraycopy(BOM_UTF16, 0, allData, 0, BOM_UTF16.length);
System.arraycopy(contentByte, 0, allData, BOM_UTF16.length, contentByte.length);
is = new ByteArrayInputStream(allData);
} catch (UnsupportedEncodingException e) {
return is;
}
return is;
}[/code]
实际是写成了UTF16,解决了问题,但是CSV默认的逗号分隔符在Excel里面不起作用了(忘了是为什么),换成"\t",就好了。
不过写BOM这种方式似乎会有隐患,最好使用POI这样的第3方包!
我一开始也是用的UTF8,但是有问题~~
具体原因想不起来了~
有空了我再翻翻。
CSV默认的分隔符,在不同的环境下是不同的。有逗号,有Tab的。可以在CSV文件的第一行注明分隔符是什么。
sep=特定字符