Unicode

Unicode

兼容问题

由于ASCII存在字符含量过少的缺陷,所以不但我国自己搞出了国际码。其他国家也都设计出了符合自己国情的字符集

但是这就带来了问题

各个字符集之间不兼容怎么办?

Unicode

Unicode 4个字节32位

真正有效范围: 0x0 - 0x 10ffff
约十进制:1114112 个字符

unicode相当于 “区位码”(也就是电脑中运行的),实际存储要按照相应的编码方案

字符集 编码方案
UTF-8
UTF-16

UTF-8的存储

UNICODE编码(16进制) UTF8字节流(二进制)
000000 - 00007F 0xxxxxx
000080 - 0007FF 110xxxxx 10xxxxxx
000800 - 00FFFF 1110xxxx 10xxxxxx 10xxxxxx
090000 - 10FFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

例子:

比如 “啊” => UNICODE = 554A

0x00554A 处于区间 000800 - 00FFFF

所以格式为: 1110xxxx 10xxxxxx 10xxxxxx

0x554a 二进制为 : 0101 0101 0100 1010

所以实际存储的内容为:
格式:
1110xxxx 10xxxxxx 10xxxxxx
填充:
11100101 10010101 10001010
实际则为:
E5958A

UTF-16的存储

unicode 范围: 0x00000000 - 0x0010FFFF

uft-16

多语言字符区
0x00000000 - 0x0000ffff => 占两个字节

辅助平面区
0x00100000 - 0x0010FFFF => 占四个字节

以16位2字节进行对齐

总的来说存储比较复杂。。。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容