今天遇到一个奇怪的问题,将一个window下的csv文件拷贝到Ubuntu下面,采用Java FileReader读取该文件,发现第一行始终包含空白字符。经过搜索,发现这个是由于csv采用的是window系统默认的utf8-bom格式,而非通用的utf8格式。在notepad++里面将格式转换为utf8编码后,问题解决。
bom的用途:
- 标识字节顺序,即大小字节序(主要针对utf-16和utf-32)。
- 标识字节流是unicode编码。
- 标识以何种unicode编码方式进行的编码。
需要注意的是,utf8编码虽然可以采用bom(0xEF,0xBB,0xBF),但是这种用法是不推荐的,只有window才采用了这种格式,通用的应该是utf8。
参考资料: