字符集和编码简述,请别再说UTF-8是字符集了

字符集和编码

字符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.

其他几个概念

  1. BOM(Byte Order Mark)
    UTF系列编码可采用该方式。放在文件开头的第一个字节,用来表示字节序是采用big-endian还是little-endian。
  2. 字节序,顾名思义字节的顺序,再多说两句就是大于一个字节类型的数据在内存中的存放顺序(一个字节的数据当然就无需谈顺序的问题了)。
    字节序有两种: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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值