Unicode与Utf-8的那些事

1、起源

计算机起源于美国,当时所需要用到的字符比较单一,基本是英文字符和数字及其他一些符号。计算机的数据存储及运算时都是使用二进制表示,而具体哪些二进制数字表示哪个字符,为了通用在计算机中表示这些字符,美国国家标准学会制定一个通用字符编码标准—ASCII码。

2、发展

由于ASCII码只能最多表示128个字符(包括不可见字符),显然不满足全球这么多字符表示(我国汉字就有7万多),又提出使用将字符中最高闲置位也利用起来(之前这个最高字符用于奇偶验证),扩充为256字符

  • 2.1:此时每个国家对256字符进行编码不一样,所表示的字符都不一样,如130在法语到e,而在希伯来语代表gimel。但不管如何前127符号都是一样,不同只有后128符号

  • 2.2:汉语表示的字符串如果只用一个字节来表示,无法满足7万多的汉字的表示。所以采用双字节编码来表示(DBCS:double bytes codesets),理论上256*256=65535

3、Unicode出现

每个国家都制定自己的编码标准,如GB2312(简体汉字),GBK(兼容2312,包含繁体中文BIG5),GB18030(兼容2312,gbk,包含其他少数民族文字等),这样需要先知道每个文本的编码才能进行解码显示正常字符,否则就是一堆乱码。那么能不能有一个统一的编码将全世界的所有字符都纳入,这时Unicode就登场了,可以表示百万级别的字符(可以表示emoji表情)。具体字符:https://home.unicode.org/,汉字:http://www.chi2ko.com/tool/CJK.htm

4、Unicode的问题

Unicode 只是规定了二进制的代码,却没有规定应该如何存储这些二进制,这就导致了下面几个问题
4.1:没有定义该字符是使用一个字节表示还是二个字节表示或者更多字节,比如“基”字的Unicode对应二进制是57FA(至少两个字节),emoji笑脸表情1F607(至少三个字节),没有相应的存储编码(解码)方式,计算机则无法识别
4.2:如果规定了统一数量的字节来字符表示,也会带来极大的浪费,特别是一些拉丁文,大部分用一个字节就可以表示了。

5、UTF的出现
以上问题造成了多种存储方式,导致了Unicode在很长一段时间无法推广。直到互联网广泛应用直接推动了UTF-8出现,这一种是可变大小编码方式,除此之外也用UTF-16(2个字节或者4个字节),UTF-32(4个字节)

6、UTF-8与Unicode的转换关系
Unicode二进制代码:占用大小:UTF-8二进制表示
0000 0000 - 0000 007F : 一字节:0xxx xxxx
0000 0080 - 0000 07FF : 二字节:110x xxxx 10xx xxxx
0000 0800 - 0000 FFFF : 三字节:1110 xxxx 10xx xxxx 10xx xxxx
0001 0000 - 0010 FFFF : 四字节:1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx

举例:“基”字(57FA),Unicode二进制表示 0101 0111 1111 1010,57FA在0000 0800 - 0000 FFFF之间,则知道应该用三个字节来表示该字符
那么采用1110 xxxx 10xx xxxx 10xx xxxx,下一步把x替换成Unicode 二进制,从右到左替换

  1110 xxxx 10xx xxxx 10xx xxxx
+      0101   01 1111   11 1010
------------------------------- 
  1110 0101 1001 1111 1011 1010

因此为:11100101 10011111 10111010,即E5 9F BA

可以通过命令行:echo ‘基' | xxd ,或者echo ‘基' | xxd -b 看到二进制

7、尝试一下
将严(unicode:4E25)字转换成UTF-8
结果:E4B8A5

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,185评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,445评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,684评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,564评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,681评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,874评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,025评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,761评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,217评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,545评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,694评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,351评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,988评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,778评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,007评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,427评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,580评论 2 349