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的映射、转换。
UTF8笔记
最新推荐文章于 2025-08-10 15:30:30 发布