unicode和utf8编码详解
来源:互联网 发布:张剑黄皮书知乎 编辑:程序博客网 时间:2024/05/20 04:31
大家都知道计算机只能处理数字,所以在计算机中其他字符都需要先转换为数字0和1才能处理。每8个bit作为一个字节,一个比特位表示一个一个字符,一个字节就能表示255个字符。
而一个字节足以表示所有的美国字符,所以美国人编写了自己的ASCII编码,作为自己的统一编码。但是汉字不止255个,所以中国用两个字节表示一个汉字,编写了Gb2312编码作为自己的统一编码。同理,日本韩国等国家也都编写了自己的标准编码。但是各国的编码标准不同,统一显示就会出现乱码。
由此,Unicode编码产生了,将所有语言统一到一套编码里。
但是Unicode的编码占用的内存比较大,举个例子。汉字“中”的Unicode编码是两个字节即16个比特位,而英文字母只有一个字节即8个比特位,所以Unicode在表示ASCII编码的英文字符时会在ASCII编码的基础上在编码前加上8个0.。所以Unicode编码会比ASCII编码多需要一倍的内存空间,传输时也同样要多传输一倍的量。
看上去比ASCII编码多需要一倍的空间,怎么办?将Unicode编码转换为可变长度的utf-8(后面为了方便会直接写成utf8)编码。utf8将用一个字节表示英文字符,用三个字节表示中文,比较偏僻的中文会用4-6个字节表示,如果需要传输大量的英文,utf8的作用就非常明显了。
那么问题又来了,如果计算机内部处理的是utf8的可变长编码,就相对来说比较复杂了,毕竟是不定长的,不如处理定长的Unicode编码方便快捷。所以计算机内部处理编码时会牵扯到Unicode和utf8的转换。怎么说呢?计算机得到一串utf8编码的字符,会先将其转换为Unicode编码的字符,处理完了会再将其转换为utf8编码的字符进行输出。如下图:
本文学习自imooc,错误理解之处望加指正。
- unicode和utf8编码详解
- UTF8,UNICODE,GB编码详解
- UTF8和UNICODE和GBK编码
- unicode和utf8编码的互相转换
- utf8和unicode编码的关系
- 编码 unicode与utf8
- ASCII,UniCode&UTF8编码
- Ansi,UTF8,Unicode编码
- Ansi,UTF8,Unicode编码
- Ansi,UTF8,Unicode编码
- 编码:utf8, unicode, GBK
- Unicode编码(UTF8/UTF16)
- Ansi,UTF8,Unicode编码
- 编码,UTF8,UNICODE
- 设置vim支持中文编码GB2312和Unicode编码UTF8
- java中unicode编码和utf8编码相互转换
- unicode编码与utf8编码
- Unicode编码转到utf8编码
- 基于Dragonboard 410c的音频处理跟踪
- Activity的透明背景度的设置
- 备受瞩目的“2017全球云计算大会”有哪些亮点值得关注?
- php 获取微信公众号access_token
- C# 枚举简析
- unicode和utf8编码详解
- 面试
- Linux定时任务Crontab命令
- ML编程作业: Linear Regression
- 红黑树--自顶向下插入
- Lindo.WhatsBest! v15.0.1.0 1CD
- java面试总结
- PHP redis有序集合操作【点赞功能】
- mybatis中 SqlSessionTemplate的理解