字符编码笔记

码位:每个字符在字符集中的编号,如在ASCII字符集中,空白符是编号0,回车是10。。以此类推。当字符数量很大的时候,使用分区的方式进行管理,比如GB2312字符集,有94个分区,每个分区内有94个位,这样每个字符的码位就不是从0开始数的,而是xx分区中的xx位。

编码:但是这个码位并不是最终在计算机中存储的数据。而是要根据码位以及相应字符集的转换规律,计算得出的数字才是真正的字符集编码。而且为了让计算机能区分不同的编码,各个标准都会设计使得转换后的编码的数值位于不同的区间,比如ACSII码是小于等于127的,GB2312的编码是大于127的,这样计算机读到一个大于127的数字时,就不会将其理解为ASCII码,而是依据当前设定的编码规则来解读了,可见,GB2312是兼容ASCII的。

码元:编码的基本单元/单位,不同编码格式的码元长度和码元数量不同,比如GB2312,码元为2字节长,而表示一个字符需要两个码元。比如utf8,码元1字节长,表示字符需要1-4个码元。

Unicode:用四个字节表示一个字符的字符集,能表示四十多亿个字符,覆盖世界上绝大部分字符,范围U+0000-10FFFF。

GB2312:大小为两个字节的编码,即两个字节表示一个汉字,能表示6763个汉字,并兼容ASCII

utf8:可变长编码,1字节到4字节长,而不是固定的四个字节,这样节省了空间。utf8对Unicode码位分为4个区间,最终转换出来的编码及其长度由该码位所在区间决定。

utf16:码元2字节长,“16”。对于U+0000-FFFF,一个码元就能表示,对于U+10000-10FFFF之间的0x100000个字符,需要两个码元表示,而Unicode空出了两个区间来组成(表示?)这4字节长的编码:U+D800-DBFF,U+DC00-DFFF,这两个区间刚好能表示0x400*0x400=0x100000个字符。

https://en.wikibooks.org/wiki/Unicode/Character_reference/D000-DFFF

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值