Unicode和UTF-8的区别
来源:互联网 发布:淘宝产品参数 编辑:程序博客网 时间:2024/06/06 08:24
Unicode和UTF-8的区别
http://blog.sina.com.cn/s/blog_149e9d2ec0102wyio.html
世界上的编码方式千差万别,比如ASCII,Unicode,UTF-8,UFT-16,UFT-32,GB2312等等,但是此处我们仅仅讲解unicode和utf-8的区别。
1. Unicode编码方式
它的全称是:”Universal Multiple-Octet Coded Character Set”,简称UCS,俗称 “unicode“。
在制定Unicodo编码时,计算机已经得到了极大的发展,存储空间已经不在是制约计算法发展的问题了。因此,国际标准化组织在定义unicode编码时,要求所有的字符必须以两个字节(16位)表示。但是这样死性的规定,必然会导致一些问题,比如如何用unicode表示ASCII,ASCII只需要八位,256个数字即可完全表示,那么多出的8位将会全部置0,这样就会浪费一般的空间,对于大文件,这样的浪费是让人心痛的,所以这也就导致了unicode在很长的一段时间内并没有得到快速的发展。
直到互联网的出现,为了解决unicode的固有问题,所以utf-8应运而生。
2. UTF-8编码方式
为了解决Unicode的网路传输问题,那么面向传输的utf-8标准出现了,utf-8每次传输的是8位数据。那么,顾名思义,utf-16就是每次传输16位数据,utf-32每次传输32位数据。
此处需要注意的是uitf-8是unicode编码方式之一。
utf-8最大的特点就是它是一个变长的编码方式,他可以使用1~4个字节表示一个符号,根据不同的符号改变字节的长度。
utf-8有两条常用的使用规则:
1. 对于单字节的符号,字符的第一位是0,后面7位是字符的unicode编码。因此对于英文字母,utf-8和ASCII编码方式是一样的。
2. 对于n个字节(n>=2), 第一个字节的前n位都设为1,第n+1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的unicode码。
下表总结了编码规则,字母x表示可用编码的位。
Unicode符号范围 | UTF-8编码方式
(十六进制) | (二进制)
--------------------+---------------------------------------------
0000 0000-0000 007F | 0xxxxxxx
0000 0080-0000 07FF | 110xxxxx10xxxxxx
0000 0800-0000 FFFF | 1110xxxx 10xxxxxx10xxxxxx
0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx10xxxxxx
Unicode符号范围 | UTF-8编码方式
(十六进制) | (二进制)
--------------------+---------------------------------------------
0000 0000-0000 007F | 0xxxxxxx
0000 0080-0000 07FF | 110xxxxx10xxxxxx
0000 0800-0000 FFFF | 1110xxxx 10xxxxxx10xxxxxx
0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx10xxxxxx
下面,还是以汉字“严”为例,演示如何实现UTF-8编码。
已知“严”的unicode是4E25(100111000100101),根据上表,可以发现4E25处在第三行的范围内(00000800-0000 FFFF),因此“严”的UTF-8编码需要三个字节,即格式是“1110xxxx 10xxxxxx10xxxxxx”。然后,从“严”的最后一个二进制位开始,依次从后向前填入格式中的x,多出的位补0。这样就得到了,“严”的UTF-8编码是“1110010010111000 10100101”,转换成十六进制就是E4B8A5。
已知“严”的unicode是4E25(100111000100101),根据上表,可以发现4E25处在第三行的范围内(00000800-0000 FFFF),因此“严”的UTF-8编码需要三个字节,即格式是“1110xxxx 10xxxxxx10xxxxxx”。然后,从“严”的最后一个二进制位开始,依次从后向前填入格式中的x,多出的位补0。这样就得到了,“严”的UTF-8编码是“1110010010111000 10100101”,转换成十六进制就是E4B8A5。
注:部分信息借鉴与互联网。
阅读全文
0 0
- Unicode和UTF-8的区别
- utf-8和unicode 的区别
- ASCII,Unicode和UTF-8的区别
- Unicode和UTF-8的区别
- ascii、unicode和utf-8的区别
- Unicode和utf-8的区别
- utf-8和Unicode的区别
- Unicode和UTF-8的区别
- Unicode和UTF-8的区别
- 总结unicode和utf-8的区别
- unicode 和utf-8的区别
- 关于unicode和utf-8的区别
- Unicode 和 Utf-8的区别
- Unicode 和 UTF 的区别
- Unicode UTF-8 UTF-16 的区别和联系
- Unicode 和 UTF-8、UTF-16之间的区别
- Unicode和UTF-8区别
- UTF-8、UTF-16、Unicode的区别
- iOS 得到当前设备的IP地址
- STM32堆和栈(Heap & Stack)的资料理解
- Android Studio 开发中遇到的bug
- 谷歌开源TensorFlow Object Detection API物体识别系统
- servlet中的Filter过滤器
- Unicode和UTF-8的区别
- 数字签名算法的实现
- 三种特征归一化的方法之SumNormalizer
- C++字符串流操作
- 日志库EasyLogging++学习系列(9)—— 性能跟踪功能
- jquery 不区分元素根据name获取对象
- php代码标识
- C++编译器多态实现原理
- java弱引用软引用