谈谈对Unicode和UTF8的理解

之前一直搞不懂 gb2312 gbk ASCII utf8 utf32 这些7788的东西。
现在我谈一下对他的理解。
因为计算机底层是01010101010这种的2进制存储,所以你存储的时候怎么把这种01010的二进制在转换的时候变成中文或英文还有一些表情或则+-乘除这些符号呢。

其实这个就是字符集通俗讲就是2进制的不同位代表的每个中文或英文这些东西

比如1个字节8位
假如0000 0001  代表 中文  我 
0000 0002  代表中文 爱
那么计算机底层就会存储

00000001  00000002  就是  我爱 就可以翻译过来了 空格为了方便查看 但是 但是  这是我独家定义的对应关系 
实际上ASCII  和  gbk  gb2312  Unicode 都是分别定义了 这种关系就是这个意思 他们是一类的 都叫字符集
这个时候有人说gbk不是编码格式么 下面会讲解

ASCII  这个玩意是最早出来的字符集 他都是英文字母和基本符号 因为英文没多少字母所以 1个字节就搞定了对应关系
但是中国文字多 中国又定义了一份 gb2312 用了2个字节  也就是65535 可以标识大多数中文   所以又出现一个字符集

然后 后期gbk是对 gb2312的升级 加入了 日语韩语  好像也是2个字节 这个我没太详细去查询
还有其他的字符集香港自己的字符集

这么多字符集所以存的都是0100110101010这种2进制 但是不同字符集对应的 含义肯定不完全相同所以需要一个统一的字符集 这个时候 出现了 unicode   就是它统一了字符集 

所以unicode可以标识任何的你想标识的中文英文符号其他语言等等。
说到这里字符集应该说明白了
下面讲讲为什么需要utf8这个东西
还是拿我上面讲的独家对应关系举例子 
假如0000 0001  代表 中文  我 
0000 0002  代表中文 爱
那么计算机底层就会存储
00000001  00000002  就是  我爱    
空格是为了阅读的你方便区分 那如果 计算机底层没有空格他怎么区分呢
前面说中文太多  1个字节肯定表示不够用    那么可能 你字  这个中文  需要2个字节表示 如下
0000000100000002           
那么我爱你就表示成  00000001 00000002  0000000100000002
我加了空格可能你可以看得懂计算机底层没空格  那么这段可以解释成  我爱你 也可以解释成 我爱我爱
因为上面我是00000001 00000002  0000000100000002 这样断句的 如果 我改成
00000001 00000002  00000001 00000002 这样断句是不是 就是我爱我爱了 
计算机底层存储可以理解为 00000001000000020000000100000002 所以你不告诉他怎么断句它也不知道

utf8就是为了解决 unicode存储可能出现歧义出现的 一种编码格式。
说到这里 如果你能豁然开朗请给我个赞 然后接着看。

为什么说utf8这么受欢迎因为 他是可变长度的 怎么理解呢 看下面

Unicode编码   UTF-8编码(二进制)
U+0000 – U+007F            0xxxxxxx
U+0080 – U+07FF           110xxxxx 10xxxxxx
U+0800 – U+FFFF           1110xxxx 10xxxxxx 10xxxxxx
U+10000 – U+10FFFF    11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

最开始我看到这个一脸懵逼,网上好多文章讲这个规则但是我总是get不到点 
utf8 编码方式 是对 unicode字符集的一个存储到计算机2进制的实现 
unicode表示那么多字符了 肯定有 00000001就可以表示的    也有 011111110000110000100多个字节表示的字符
utf8规定了4个范围 就是上面的对照图  你看到 上面图中1110xxxx  11110xxx 110xxx 0xxx不知道你发现规律没有
实际上这些就是为了让计算机底层可以对2进制进行区分当发现0开头的字节 就读1个字节就翻译 
当发现110开头的字节就读两个字节就翻译   1110 11110依次类推 所以计算机底层就知道了读多少字节翻译对应字符了 就不会出现 我爱你  变成我爱我爱了

为什么规定了4个范围就是为了 unicode 表示少的时候省点空间 所以根据前面的区间 放对应的数据到后面xxxx中前面0 110  1110 11110 都是固定的 为了让计算机底层断句用的 类似我给你 敲的空格 如果utf8你搞明白了  

unicode肯定有对应的换算成2进制的数  对应的向满足区间的utf8的那些xxxx中去填就行了  然后会得到新的2进制值这个时候就是utf8的编码值


下面说说gbk编码 你有的时候也会写成gbk编码 刚刚我说他不是 字符集么 ,他确实是字符集,但是他定长了啊  他规定2个字节 翻译一次  即使 是 00000001   也存成00000000 00000001  所以就是空间浪费 但是不会歧义  
所以他也是编码格式。
utf32也是定长 ,但是他不是字符集 他是实现方式对unicode的实现方式 对比utf8缺点就是空间浪费 所以不常用。
讲完了希望我的 通俗讲解对你有帮助。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,657评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,889评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,057评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,509评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,562评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,443评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,251评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,129评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,561评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,779评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,902评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,621评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,220评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,838评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,971评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,025评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,843评论 2 354

推荐阅读更多精彩内容