关于编码问题的若干总结
2017-11-16 15:13
218 查看
做程序开发,乱码问题应该是大家经常碰到的问题,最近本人看了很多资料,做了很多测试,故今日做个总结,既方便自己日后查看,也能帮助其他被此困惑的人。部分内容参考https://www.zhihu.com/question/20650946。
1、编码方案分类
大家一般比较常见的就是1、GB开头的,包括GB2312、GBK、GB18030。GB即国标的简称,专门针对中文编码,是目前比较流行的编码方案之一,一个汉字占两个字节。2、Unicode,包括UTF8、UTF16(BE/LE)。UTF8也是目前国际使用最广的编码方案,英文字符用一个字节表示,中文字符用3个字符表示。而UTF16则是中英文字符都统一用两个字节表示。很多软件显示的unicode编码实际默认的是UTF16,ansi对于使用简体中文的我们表示的实际上是GBK。至于很多软件提示的带BOM或者不带BOM代表的是是否在文件的最前面保存一个指示编码的标签,这个标签就是BOM。一般我们使用不带BOM的。
2、可执行程序的编码
可执行程序的编码直接取决于你的编辑器,和你的编译器无关。即如果你的编辑器使用的GB2312,那不管你的程序在哪编译,最终可执行程序的编码是GB2312的,因为你提交给编译器的汉字已经被编辑器转换为对应的二进制编码了。
1、编码方案分类
大家一般比较常见的就是1、GB开头的,包括GB2312、GBK、GB18030。GB即国标的简称,专门针对中文编码,是目前比较流行的编码方案之一,一个汉字占两个字节。2、Unicode,包括UTF8、UTF16(BE/LE)。UTF8也是目前国际使用最广的编码方案,英文字符用一个字节表示,中文字符用3个字符表示。而UTF16则是中英文字符都统一用两个字节表示。很多软件显示的unicode编码实际默认的是UTF16,ansi对于使用简体中文的我们表示的实际上是GBK。至于很多软件提示的带BOM或者不带BOM代表的是是否在文件的最前面保存一个指示编码的标签,这个标签就是BOM。一般我们使用不带BOM的。
2、可执行程序的编码
可执行程序的编码直接取决于你的编辑器,和你的编译器无关。即如果你的编辑器使用的GB2312,那不管你的程序在哪编译,最终可执行程序的编码是GB2312的,因为你提交给编译器的汉字已经被编辑器转换为对应的二进制编码了。
相关文章推荐
- 关于有环链表的若干问题总结
- 关于.so库文件引入项目导致crash的若干问题总结
- 关于C/C++中二维数组、指针的引用等若干问题的总结
- 关于TFS2010 远程无法创建团队项目的若干问题总结
- 关于jsp页面中的编码问题总结
- 关于Django的TIME_ZONE时区问题的若干总结
- Java+Mysql做web项目中关于编码问题的总结
- 关于python编码问题总结
- failed to open stream解决办法-关于WIN主机下配置PHP的若干问题解决方案总结
- 关于Django的TIME_ZONE时区问题的若干总结
- 关于编码的方式控制IIS问题总结!
- 关于TFS2010 远程无法创建团队项目的若干问题总结
- 彻底学会使用epoll(六)——关于ET的若干问题总结
- 关于程序中Activity若干问题知识点总结
- 关于win7遇到的若干问题的处理总结
- 彻底学会使用epoll(六)——关于ET的若干问题总结
- 彻底学会使用epoll(六)——关于ET的若干问题总结
- 关于opencv在QT下的若干问题总结
- 关于字符串编码的(ANSI、GB2312、UTF8)问题,在应用开发中若干问题
- 关于各种编码问题,汉字处理的一点小总结