编码问题:
一个文本可以有很多种编码。
汉字编码有:
GB2312编码:1981年5月1日发布的简体中文汉字编码国家标准。GB2312对汉字采用双字节编码,收录7445个图形字符,其中包括6763个汉字。
BIG5编码:台湾地区繁体中文标准字符集,采用双字节编码,共收录13053个中文字,1984年实施。
GBK编码:1995年12月发布的汉字编码国家标准,是对GB2312编码的扩充,对汉字采用双字节编码。GBK字符集共收录21003个汉字,包含国家标准GB13000-1中的全部中日韩汉字,和BIG5编码中的所有汉字。
GB18030编码:2000年3月17日发布的汉字编码国家标准,是对GBK编码的扩充,覆盖中文、日文、朝鲜语和中国少数民族文字,其中收录27484个汉字。GB18030字符集采用单字节、双字节和四字节三种方式对字符编码。兼容GBK和GB2312字符集。
Unicode编码:国际标准字符集,它将世界各种语言的每个字符定义一个唯一的编码,以满足跨语言、跨平台的文本信息转换。
UTF8编码:(包含UTF8 without BOM)是一种针对Unicode的可变长度字符编码,又称万国码。由Ken Thompson于1992年创建。现在已经标准化为RFC 3629。UTF-8用1到6个字节编码Unicode字符。用在网页上可以统一页面显示中文简体繁体及其它语言(如英文,日文,韩文)。
这些编码对同一个字的表示方法不一样,用错了 要么显示不出来,要么乱码。
英文在其中很统一:ASCII 永远一个字节,所有编码里面都兼容(Unicode里面好像有变化)
复制文本到KEIL 里面 或者 串口打印 的时候出现乱码的问题就是他咯。
copy代码的时候留意一下。
回车换行:
在不同环境下回车是不一样的。 Windows下一个回车按键是两个字符 \r\n Linux 下 是 \n Mac 下是 \r 。 有人问,为什么不统一? 历史遗留问题,无解。
win下写 Shell 脚本到linux 为什么不能运行? 回车问题是其中一个。
copy前 注意一下。
C语言的坑:
enum 长度不固定。 跨平台的时候 悠着点。 尽量避开。
enum 长度方面的定义是,满足 枚举值 的最小长度。
编译器根据运行机器会插一脚,并不是最小长度最大性能。编译器优化的时候会让这个长度变成摇色子。
做通讯,做dll的时候 避开他,别无他选。
指针大小。 不同位宽的CPU 指针长度是不一样的。 跨平台的代码 小心。