程序编码
前言
不同的代码编辑器在对于编码规则的默认是不一样的,早期可能是为了对于中文更好地支持通常可能会选用GB2312编码,进行程序的编写,随着开发过程的深入,有些 GUI在开发过程中对于编码方式有着一定的要求(LVGL要使用UTF-8,才可以在中文上显示的比较正常,也可能是自己研究的浅)。
常用的编码方式
就目前而言我们常用的编码方式无非就是:UTF-8和GB2312两种
- UTF-8:它属于unicode字符集的一种编码
- GB2312:它既是一种编码规则同时也是一种字符集
UTF-8中BOM是什么东西
在某些特定的文件格式中,一些文件信息是放在文件的头部的比如说:.JPG……而有些文件是没有固定的文件头的,比如说:.c、.h……。但是在一些特定的编码下面,文件头可能会增加一些特殊的字段,用来记录某些信息(目前我就知道可能会区分大小端)。
不同编码下的文件头的实例:
- UTF-8:文件头为空
- UTF-8 with BOM:文件头有固定的EF BB BF
- UTF-16 LE/UCS-2 LE:文件头有固定的FF FE(小端模式)
- UTF-16 BE/UCS-2 BE:文件头有固定的FE FF(大端模式)
- 注意:在使用UTF编码相互转换的过程中,notepad++是不会提示错误的,但是当在编码变成GB2312的时候,编辑器就会提示错误,点击是之后,就会出现我们常见的乱码状态了。但是使用vscode就不会出现问题,可能和编辑器的实现有关系。
总结
因为考虑到兼容性的问题(UTF-8-BOM,有些老的编辑器不能识别)所以最终选择UTF-8来作为今后的编程的标准编码。
以下为UTF-8作为编码时的注意事项:
- 编辑器需要设置换行符为\r\n
- 在注释后面增加空行
- 谨慎使用注释
- 在看到警告的时候关联思考是否可能和中文有关系(warning C4819)
- 参考文章
常见编辑器的编码设置:
vscode:
- 取消自动猜测字符集,之前遇见过猜测错误的情况,导致自动保存之后编码乱套了。
- 设置换行符为\r\n
- 设置编码UTF-8
source insight4:
- source insight4中的结束符需要选择windows(CR/LF)(\r\n)