UTF8笔记

unicode和ucs字符分别用两个字节和四个字节表示,这样存储时非常浪费。有鉴于此出现了unicode/ucs的压缩形式--UTF8(unicode transformation format-8 或 UCS transformation formats)。
UTF8以8bits为最小编码单位,每个字符可能是一个字节,也可能是多个字节,当然也有基于16bits和32bits的UTF16和UTF3,但UTF8使用最频繁。
UTF8中因为每个字符可能是一个字节,也可能是多个字节,要加以区分,给每个字节的高位放上标志位。
要表示的内容是7bits时 使用一个字节 0*******
8-11bits时 使用两字节 110***** 10******
12-16bits时 使用三字节 1110**** 10***** 10******
以此类推。
UTF8解码时的安全考虑:去掉标志位后检查位数是否满足要求,如00000000是正确的UTF8编码,11000000 10000000去掉0后是0,但0只有7位不应用两字节编码,舍掉。

英文字符较多时使用UTF8可以节省存储空间。
1980年GB2312收录了6763个汉字和682个符号,支持的字符太少了。
1995年汉字扩展规范GBK1.0(K是kuozhan)收录更多字符。
GBK和GB2312都是双字节编码,GBK向下兼容GB2312,GB2312向下兼容anscii码。
2000年GB18030取代GBK1.0成为正式国家标准,编码采用单字节,双字节和四字节方案。
Windows内部的codepage对应不同的内码,利用codepage完成与unicode的映射、转换。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值