关于编码

需要区分的概念

  1. 码点。字符对应的数字,唯一定义字符,编码的基础。最重要的一个是Unicode,其中UCS-2子集最常用。
  2. 编码。字符对应的字节数组,存储传输时总是要用字节保存下来的。如utf-8,utf-16(LE|BE)。

编程语言里字符串和字节数组的区别

语言 字符串 字节数组
C++ char[]
C# string byte[]
java String byte[]
python unicode str

c#的string,python的unicode,java的String才是字符串。他们默认是utf-16编码的。
c++里的字符串实际是字节数组

中文编码

虽然想只了解Unicode,然而GB系列编码经常遇到。
VS默认是GB2312编码,并且没有地方设置新建文件为utf-8编码(┬_┬)。

简单记录下:
ascii取值范围0x00-0x7f,共128字符。
汉字不够用。没问题,有个ANSI编码标准,只要求是编码中的ascii码要保持不变。
1980年,GB2312扩展ascii,有6763个汉字,682个符号,成为国家标准。
1995年,GBK扩展GB2312,有21886个汉字,883个符号。两个字节表示。这时微软定义的。
2000年,GB18030扩展GBK,包含更多汉字,加入民族语言,新加的字符有4个字节的,新的国家标准。
可以统称GB简体编码,一般GBK就够了。

ANSI标准有个弊端,不同的编码互相冲突。
Big5是繁体字编码,与GBK就不兼容。这个时候,Unicode就来救场了。
一个特别的地方,简体字和繁体字的unicode不重叠

收集的资料

wiki UTF-16
wiki UTF-8
彻底搞懂字符编码(unicode,mbcs,utf-8,utf-16,utf-32,big endian,little endian...)
UTF-16的特殊字符
字符编码笔记:ASCII,Unicode和UTF-8

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容