转为utf8编码的正确姿势

来源:互联网 发布:onenote mac版下载 编辑:程序博客网 时间:2024/05/16 09:26

最近发现项目里面有的文件eclipse打开为乱码,显然这是由于有的同事不小心把GBK编码的文件提交到SVN。
强迫症发作,全部改为utf-8,使用的工具是Notepad++。结果是悲剧,提交代码之后,部署时编译报错,整整
停了2个小时测试环境才恢复。虽然是极其简单的事,我觉得还是有必要记录下来,希望大家不要掉入同一个坑。

项目请用utf8编码

项目请用utf8编码,项目请用utf8编码,项目请用utf8编码,重要的事情说三遍。IDE设置默认的编码为utf8。所有的开发人员都要遵守。这样,就避免了坑。

转为utf8编码的正确姿势

万一有需要转为utf8,如下步骤:
1. 请使用Notepad++打开文件
2. 选择“格式”菜单 -> 选择“转为 UTF-8 无 BOM 编码格式”
3. 保存文件

Notepad++截屏

笔者在开始在步骤2选择的是“转为 UTF-8 编码格式”,引发悲剧。

BOM到底是什么鬼?

BOM全称Byte order mark,就是指定byte的编排顺序。byte编排有先大,先小两个类型。
BOM放在文本文件的开头。BOM有以下三个作用:

  1. 指定byte的编排顺序。
  2. 说明文本是unicode字符集。
  3. 具体指明是UTF-8,还是UTF-16,异或UTF-32。BOM对应的值不同。

UTF-8编码下,BOM为0xEF0xBB0xBF,没有什么意义,官方不推荐使用。一个文本读取程序如果不支持UTF-8的BOM或者读取出来是,那么编译程序就挂。丢弃UTF-8的BOM就正常(eclipse貌似就是这样)。所以UTF-8下不要用BOM,一个可能引起错误的存在而已。

UTF-16和UTF-32下BOM是必须有的,不太一样,不常用,所以不扒。

参考链接

  • Byte_order_mark
1 0