对UTF8编码的初步认识!
来源:互联网 发布:人工智能平台魔方 编辑:程序博客网 时间:2024/05/13 20:00
在网络中有很多地方都有采用UTF8编码,由于要编写与邮件服务端有关的程序,而邮件服务端有些地方用到了UTF8编码,所以对它有了初步的认识!
它其实和Unicode是同类,就是在编码方式上不同!
首先UTF8编码后的大小是不一定,不像Unicode编码后的大小是一样的!
我们先来看Unicode的编码:一个英文字母 “a” 和 一个汉字 “好”,编码后都是占用的空间大小是一样的,都是两个字节!
而UTF8编码:一个英文字母“a” 和 一个汉字 “好”,编码后占用的空间大小就不样了,前者是一个字节,后者是三个字节!
现在就让我们来看看UTF8编码的原理吧:
因为一个字母还有一些键盘上的符号加起来只用二进制七位就可以表示出来,而一个字节就是八位,所以UTF8就用一个字节来表式字母和一些键盘上的符号。然而当我们拿到被编码后的一个字节后怎么知道它的组成?它有可能是英文字母的一个字节,也有可能是汉字的三个字节中的一个字节!所以,UTF8是有标志位的!
当要表示的内容是 7位 的时候就用一个字节:0******* 第一个0为标志位,剩下的空间正好可以表示ASCII 0-127 的内容。
当要表示的内容在 8 到 11 位的时候就用两个字节:110***** 10****** 第一个字节的110和第二个字节的10为标志位。
当要表示的内容在 12 到 16 位的时候就用三个字节:1110***** 10****** 10****** 和上面一样,第一个字节的1110和第二、三个字节的10都是标志位,剩下的空间正好可以表示汉字。
以此类推:
四个字节:11110**** 10****** 10****** 10******
五个字节:111110*** 10****** 10****** 10****** 10******
六个字节:1111110** 10****** 10****** 10****** 10****** 10******
.............................................
..............................................
明白了没有?
编码的方法是从低位到高位
现在就让我们来看看实例吧!
黄色为标志位
其它着色为了显示其,编码后的位置
一般在UTF8中,ASCII字符集用1Byte长度来表示,即上表中的第1行;西欧字符集用2Byte长度来表示,即上表中的第2行;ASCII字符集用3Byte长度来表示,即上表中的第3行;
它其实和Unicode是同类,就是在编码方式上不同!
首先UTF8编码后的大小是不一定,不像Unicode编码后的大小是一样的!
我们先来看Unicode的编码:一个英文字母 “a” 和 一个汉字 “好”,编码后都是占用的空间大小是一样的,都是两个字节!
而UTF8编码:一个英文字母“a” 和 一个汉字 “好”,编码后占用的空间大小就不样了,前者是一个字节,后者是三个字节!
现在就让我们来看看UTF8编码的原理吧:
因为一个字母还有一些键盘上的符号加起来只用二进制七位就可以表示出来,而一个字节就是八位,所以UTF8就用一个字节来表式字母和一些键盘上的符号。然而当我们拿到被编码后的一个字节后怎么知道它的组成?它有可能是英文字母的一个字节,也有可能是汉字的三个字节中的一个字节!所以,UTF8是有标志位的!
当要表示的内容是 7位 的时候就用一个字节:0******* 第一个0为标志位,剩下的空间正好可以表示ASCII 0-127 的内容。
当要表示的内容在 8 到 11 位的时候就用两个字节:110***** 10****** 第一个字节的110和第二个字节的10为标志位。
当要表示的内容在 12 到 16 位的时候就用三个字节:1110***** 10****** 10****** 和上面一样,第一个字节的1110和第二、三个字节的10都是标志位,剩下的空间正好可以表示汉字。
以此类推:
四个字节:11110**** 10****** 10****** 10******
五个字节:111110*** 10****** 10****** 10****** 10******
六个字节:1111110** 10****** 10****** 10****** 10****** 10******
.............................................
..............................................
明白了没有?
编码的方法是从低位到高位
现在就让我们来看看实例吧!
黄色为标志位
其它着色为了显示其,编码后的位置
Unicode十六进制
Unicode二进制
UTF8二进制
UTF8十六进制
UTF8字节数
B
00001011
00001010
B
1
9D
00010011101
11000010 10011101
C2 9D
2
A89E
10101000 10011110
11101010 10100010 10011110
EA A2 9E
3
一般在UTF8中,ASCII字符集用1Byte长度来表示,即上表中的第1行;西欧字符集用2Byte长度来表示,即上表中的第2行;ASCII字符集用3Byte长度来表示,即上表中的第3行;
- 对UTF8编码的初步认识!
- 对UTF8编码的初步认识!
- 对UTF8编码的初步认识!
- 对UTF8编码的初步认识!
- 对UTF8编码的初步认识!
- 对UTF8编码的初步认识!
- 对UTF8编码的初步认识!
- [转贴] 对UTF8编码的初步认识
- 对UTF8编码的初步认识
- 对于编码的初步认识
- 对jQuery的初步认识
- 对进程的初步认识
- 对软件工程的初步认识.
- 对JSON的初步认识
- 对tapestrys的初步认识
- 对嵌入式的初步认识
- 对表单初步的认识
- 对CSS的初步认识
- 基于 GTK+ 和 X-window 的 GUI 在嵌入式 Linux 中的应用
- 流程定义的层次结构
- 用于编写configure.in的Config语言简介
- 移动应用开发商的生存之道
- Spring.Net&NHibernate 学习 1
- 对UTF8编码的初步认识!
- 7天使用感受 惠普 6515b GP169 笔记本
- 电话连接空间的两端,铃声串起时间的两点
- 提高 Linux 上 socket 性能
- 进程环境与进程控制
- 技术类-流程变量
- HQL语句(结合实例)
- VS.Net中使用ZedGraph控件的一些记录
- 整理了1000多个java开源项目,并且分类介绍