字符集和编码
字符character
字符集character set
指某一类字符的集合,包括英文字母,符号,数字,汉字,标点等等
常见的字符集:ASCII (covers all English characters), ISO/IEC 646, Unicode (covers characters from all living languages in the world),GB2312(常见汉字)
码点code point
编码字符集Coded Character Set
编码字符集内的每一个字符都有一个独特的数字对应,这个数字被称为码点code point。码点是字符在字符集中的编号。
编码encoding(码点到字节的映射)
一种机制,将码点映射到某几个字节bytes,使得字符在不同的系统能够用同一套编码模式来进行统一表示。
常见的编码:ASCII, Unicode encoding schemes like UTF-8, UTF-16, UTF-32, GB2312
注1:ASCII,GB2312本身既指一种字符集,也是一种编码,因为早期字符集和编码是绑定的,是一整套方案。
注2:有时编码字符集也会被称作码页code pages。错误。
https://www.joelonsoftware.com/2003/10/08/the-absolute-minimum-every-software-developer-absolutely-positively-must-know-about-unicode-and-character-sets-no-excuses/
代码页:ANSI标准中,不同国家对于ASCII的低128个字符达成了一致,但是对于后128个字符有不同的处理(伊朗,俄罗斯,埃及等等)。这些不同的系统被称为代码页。So for example in Israel DOS used a code page called 862, while Greek users used 737. They were the same below 128 but different from 128 up, where all the funny letters resided.
其他几个概念
- BOM(Byte Order Mark)
UTF系列编码可采用该方式。放在文件开头的第一个字节,用来表示字节序是采用big-endian还是little-endian。 - 字节序,顾名思义字节的顺序,再多说两句就是大于一个字节类型的数据在内存中的存放顺序(一个字节的数据当然就无需谈顺序的问题了)。
字节序有两种:big-endian和little-endian
a) Little-Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。
b) Big-Endian就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。
c) 网络字节序:TCP/IP各层协议将字节序定义为Big-Endian,因此TCP/IP协议中使用的字节序通常称之为网络字节序。
references
字符集和编码
https://stackoverflow.com/questions/2281646/whats-the-difference-between-encoding-and-charset
https://www.joelonsoftware.com/2003/10/08/the-absolute-minimum-every-software-developer-absolutely-positively-must-know-about-unicode-and-character-sets-no-excuses/
字节序
https://www.cnblogs.com/lkxsnow/p/5185442.html
1534

被折叠的 条评论
为什么被折叠?



