unicode和utf8编码

admin 2018年5月13日05:26:16评论630 views字数 683阅读2分16秒阅读模式
摘要

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


兼容问题

由于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字节进行对齐

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

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2018年5月13日05:26:16
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   unicode和utf8编码http://cn-sec.com/archives/51551.html

发表评论

匿名网友 填写信息