在网络中有很多地方都有采用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******
.............................................
..............................................
明白了没有?
编码的方法是从低位到高位
现在就让我们来看看实例吧!
黄色为标志位
其它着色为了显示其,编码后的位置
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编码的初步认识.rar_UTF8_utf”包含两个文件:“对UTF8编码的初步认识.htm”和“www.pudn.com.txt”,显然,它们是用来帮助我们了解UTF8编码基础知识的。 首先,我们要理解什么是字符编码。字符...
通过分析这个实例,学习者可以了解PHP开发的基本流程,提升数据库操作和表单处理的技能,同时也能够对Web安全有初步的认识。在实践中,不断调试和优化代码,将有助于深化对PHP语言的理解,进一步提升开发能力。
在了解乱码现象之前,首先需要对字符集和比较规则有一个初步的认识。 字符集是包含字符范围和编码规则的集合,它能够让我们将人类可读的字符转换成计算机能够处理的二进制数据。字符集的编码规则决定了如何将一个...
图书管理系统项目使用eclipse开发工具和MySql数据库进行开发,maven方式创建项目,编码格式为utf-8(如出现乱码可改成utf-8), 项目分成三层架构,数据访问层、业务逻辑层和表现层,并没有使用框架等复杂的技术,...
图书管理系统项目使用eclipse开发工具和MySql数据库进行开发,maven方式创建项目,编码格式为utf-8(如出现乱码可改成utf-8), 项目分成三层架构,数据访问层、业务逻辑层和表现层,并没有使用框架等复杂的技术,...
本教程旨在帮助学习者从初步认识XML到精通其使用,涵盖了一系列的知识点。 1. **XML基本概念**:XML的设计目标是传输和存储数据,而不是显示数据。它采用自定义的标记来描述数据,这些标记可以由用户定义,不同于...
这一部分强调实践操作,通过课堂讲授、演示和讨论,结合多媒体课件与传统教学手段,帮助学生建立对Python的初步认识。 2. 运算符、表达式与内置对象:深入学习Python的运算符、表达式和内置函数,使学生能熟练运用...
【计算机基础教案PPT】是针对初学者设计的一份教学材料,共75页,包含大量图表,旨在...这份教案深入浅出地介绍了计算机的基本概念和技术发展历程,适合初学者作为入门教程,帮助他们建立起对计算机科学的初步认识。
通过上述介绍和示例,相信你已经对如何学习并使用libiconv库有了初步的认识。libiconv库的强大之处在于它不仅支持广泛的字符集,还提供了丰富的API供开发者选择。无论是进行简单的字符集转换还是构建复杂的国际化...
4. **数据编码与解码**:消息通常需要被编码成字节流在网络上传输,例如使用ASCII或UTF-8编码,然后在接收端解码回文本。 5. **输入/输出流**:在VC++中,可能用到`iostream`库进行输入输出操作,将用户输入转化为...
通过这个初级源代码,你可以深入理解Java网络编程的基础,了解如何利用UDP协议实现简单聊天应用,并且对多线程编程、数据编码和用户交互等有初步的认识。动手实践这些代码,将有助于巩固理论知识,并提升实际编程...
### C#简单的TCP客户端知识点详解 #### 一、概述 ...通过以上内容的学习,你可以对C#中的TCP客户端编程有一个初步的认识。接下来可以尝试自己动手实践,加深理解并逐步掌握更多高级功能和技术细节。
### JSP基本语法学习 #### 引言 JSP(JavaServer Pages)是一种基于Java...通过本文对JSP基本语法的介绍,相信读者已经对其有了初步的认识。接下来,可以通过实践操作进一步加深理解,并逐渐掌握更高级的功能和技术。
通过这个简化的过滤器示例,你应该对如何在Java Web应用中使用过滤器有了初步的认识。过滤器是Web开发中的强大工具,可以帮助你实现各种功能,如防止跨站脚本攻击(XSS)、实现权限控制、优化性能等。请根据你的项目...
头部包含元信息,如字符编码(`<meta charset="UTF-8">`)、样式表引用(`<link rel="stylesheet" href="style.css">`)和脚本引用(`<script src="script.js"></script>`)。主体则包含了网页可见的内容,如文本、...
MySQL数据库基础培训涵盖了数据库的基本概念、安装配置、MySQL的初步认识、数据库语言、事务处理、索引、锁机制、存储引擎、备份恢复、数据库测试工具以及一些高级特性,如视图、存储过程、触发器和SQL优化。...
\usepackage[utf8]{inputenc} % 输入编码 \usepackage{fontenc} % 字体编码 \usepackage[english]{babel} % 语言包 \begin{document} 这里是文档主体。 \end{document} ``` ### 常用命令介绍 #### 文档标题与作者...
3. **初步认识Python**: - **像使用计算器一样使用Python**:Python可以进行基本的数学运算,支持整数、浮点数和复数。 - **数值**:Python提供了多种数值类型,包括整数(int)、浮点数(float)和复数(complex...
1. 文件解析:当用户打开一个TXT文件时,阅读器会读取文件内容,并按照ASCII编码或UTF-8编码解析字符。 2. 内存缓冲:将文件内容加载到内存中,形成一个缓冲区,以便快速访问和编辑。 3. 显示文本:根据用户界面设计...
这个视频教程将帮助初学者建立起对MySQL的初步认识,并掌握实际操作技能。 首先,MySQL的安装通常分为Windows、Linux和macOS等不同平台的操作。在Windows系统中,可以下载MySQL的安装程序,按照向导进行一步步安装...