Java-UTF-8+BOM 格式文件如何转换成UTF-8格式?

项目合作 项目合作 主题:1030 回复:2135

Java-UTF-8+BOM 格式文件如何转换成UTF-8格式?

泛泛之交 发布于 2017-09-27 字数 511 浏览 1217 回复 4

UTF-8格式的文件,经过“记事本”保存后变为了UTF-8+BOM,服务器上没有其他的文本编辑工具了,该怎么办?
eclipse中*.properties文件的默认字符编码是ISO-8859-1,某日,我为了加上中文注释改为了UTF-8,结果出了一次事故。我把打包好的war包放到服务器上,打开了其中一个properties文件,修改后保存。然后启动tomcat,报错了。
当时,以为properties文件不能用UTF-8保存,只得重新改为ISO-8859-1.这才得以正常运行。
某日闲来无事,在本地重现了错误。
用eidtplus可以看到,记事本改后,文件编码为UTF-8+BOM。

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

支持 Markdown 语法,需要帮助?

评论(4

浮生未歇 2017-10-28 4 楼

vi 可以帮助你,或者sublime,node++都可以。。

虐人心 2017-10-14 3 楼

记得EditPlus有一个转换功能可以将BOM转为非BOM,如果没有则UltraEdit必然有,或者更简单的方式,用二进制编码器将文件头的3个字节删除EF BB BF。

另外properties文件的utf-8转iso-8859-1是个由来已久的问题,只要文件中包含中文,就必须在发布前进行转换
传统在命令行下使用Java自带的native2ascii指令,这个网上教程很多
如果想使用Eclipse来编辑.properties文件且还想在里面写中文的话,你可以使用PropEdit作为Eclipse插件,它会在编辑时自动转换

清晨说ぺ晚安 2017-10-11 2 楼

用ultraEdit打开需要修改的文件,然后点击“另存为”,弹出对话框的时候,在“格式”一栏,选择"utf-8 - 无Bom"就ok了

甜柠檬 2017-10-09 1 楼

自己写个工具FileInputStream就可以
1、读取前3个字节判断是否是 0xEF 0xBB 0xBF

2、获取文件长度 FileInputStream.getChannel().size();
3、如果前3个字节是以上0x值 从第四个开始读取将剩余数据读取内存中。 FileInputStream.read(byte[],3,length-3); 这里的byte[]你自己定义长度就是size-3
4、关闭文件流
5、将新的内存文件写到磁盘中。