字符编码笔记:ASCII,Unicode 和 UTF-8(理解)
- 1、ASCII 码
- 美国制定的字符编码规则,对英语字符与二进制位之间的关系做了统一规定。
- 占一个字节,8 位,最多可表示 2^8 = 256 种状态(字符)
- 实际共有 128 个字符,只占用一个字节的后面 7 位。首位统一规定为 0。
- 2、非 ASCII 编码
- 其他国家各自制定的编码规则。映射本国字符和二进制之间的关系。
- 适合本国字符数在256以内的国家。
- 其他国家(字符数 > 256),则有自己的编码规则。比如中文的:GB2312
- 其他国家各自制定的编码规则。映射本国字符和二进制之间的关系。
- 3、Unicode
- 容纳世界上所有符号的符号集。每个符号都有自己的二进制代码。
- 只是一个符号集,只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储。
- 比如:英文字符全部可用 1 个字节表示,但是汉字可能需要 2 或 3 个字节。一种编码格式全部都用2个或者3个字节表示会有浪费。所以该如何存储呢?
- 4、UTF-8
- 1、概念:
- 互联网上使用最广的一种 Unicode 的实现方式。(Unicode 也有其他实现方式)
- 2、特点:
- 变长的编码方式。它可以使用 1~4 个字节表示一个符号,根据不同的符号而变化字节长度。
- 3、编码规则:
- 1)对于单字节的符号,字节的第一位设为 0,后面 7 位为这个符号的 Unicode 码。
- 因此对于英语字母,UTF-8 编码和 ASCII 码是相同的。
- 2)对于 n 字节的符号(n > 1),第一个字节的前 n 位都设为 1,第 n + 1 位设为 0,后面字节的前两位一律设为 10。
- 剩下的没有提及的二进制位,全部为这个符号的 Unicode 码。
- 1)对于单字节的符号,字节的第一位设为 0,后面 7 位为这个符号的 Unicode 码。
- 4、Unicode 和 UTF-8的对应关系()
- 4.1 关系图:
- 图:
- 说明:
- 总感觉这个图不理解,不过还是做一些解读和说明吧。
- 第一行:
- 字符最多占7位(0-7位)
- 所以:Unicode 符号范围:0(十六进制:0)-111 1111(十六进制:7F)
- 第二行:
- 字符最多占11位(8-11位)
- Unicode 符号范围:1000 0000(十六进制:80)-111 1111 1111(十六进制:7FF)
- 第三行:
- 字符最多占16位(12-16位)
- Unicode 符号范围:1000 0000 0000(十六进制:800)-111 1111 1111(十六进制:7FF)
- 第四行:
- 字符最多占21位
- Unicode 符号范围:同上
- 4.2 转换:
- Unicode 和 UTF-8都用16位表示,需要从中提取出来具体的值,然后转换。
- Unicode 到 UTF-8 的转换
- 根据Unicode 的值,确定其符号范围对应的 UTF-8 是多少位。然后,高位补0填充。
- UTF-8 提取 Unicode
- 看其是多少位,提取相关的 Unicode 值。
- 4.1 关系图:
- 1、概念:
- 5、编码存储方式:Little endian 和 Big endian
- 5.1 概念理解
- 以汉字严为例,Unicode 码是 4E25,需要用两个字节存储,一个字节是 4E,另一个字节是 25。
- 存储时,4E 在前,25 在后,这就是 Big endian 方式;
- 25 在前,4E 在后,这是 Little endian 方式。
- 即:一般文本都是从左往右的格式。
- 如果编码从左往右存:是 Big endian 方式(高位在前,FE FF 表示)
- 如果编码从右往左存:是 Little endian 方式(高位在后,FF FE 表示)
- 以汉字严为例,Unicode 码是 4E25,需要用两个字节存储,一个字节是 4E,另一个字节是 25。
- 5.2 区分:
- Unicode 规范定义,每个文件的最前面分别加入一个表示编码顺序的字符,这个字符的名字叫做 "零宽度非换行空格"(zero width no-break space),用 FEFF 表示。这正好是两个字节,而且 FF 比 FE 大 1。
- 如果一个文本文件的头两个字节是 FE FF,就表示该文件采用大头方式(左小右大);
- 如果头两个字节是 FF FE,就表示该文件采用小头方式(左大右小)。
- 5.1 概念理解
- 6、参考:
- 字符编码笔记:ASCII,Unicode 和 UTF-8 - 阮一峰的网络日志 http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html
字符编码笔记:ASCII,Unicode 和 UTF-8(理解)的更多相关文章
- 理解记忆三种常见字符编码:ASCII, Unicode,UTF-8
理解什么是字符编码? 计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是25 ...
- 字符编码:ASCII,Unicode,UTF-8
1.ASCII码美国制定的一套字符编码,对英语字符和二进制位之间的关系,做了统一规定.ASCII码一共规定了128个字符(包括32个不能打印出来的控制符号)的编码,占用一个字节,字节的最前面1位统一为 ...
- (转)字符编码笔记:ASCII,Unicode和UTF-8
字符编码笔记:ASCII,Unicode和UTF-8 访问地址:http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html
- 字符编码笔记:ASCII,Unicode和UT…
字符编码笔记:ASCII,Unicode和UTF-8 今天中午,我突然想搞清楚Unicode和UTF-8之间的关系,于是就开始在网上查资料. 结果,这个问题比我想象的复杂,从午饭后一直看到晚上9点,才 ...
- 字符编码笔记:ASCII,Unicode和UTF-8(转)
字符编码笔记:ASCII,Unicode和UTF-8 作者: 阮一峰 日期: 2007年10月28日 今天中午,我突然想搞清楚Unicode和UTF-8之间的关系,于是就开始在网上查资料. 结果,这个 ...
- [转帖]字符编码笔记:ASCII,Unicode 和 UTF-8
字符编码笔记:ASCII,Unicode 和 UTF-8 http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html 转帖 ...
- 【转载】字符编码笔记:ASCII,Unicode和UTF-8
字符编码笔记:ASCII,Unicode和UTF-8 作者: 阮一峰 今天中午,我突然想搞清楚Unicode和UTF-8之间的关系,于是就开始在网上查资料. 结果,这个问题比我想象的复杂,从午饭后一直 ...
- 关于字符编码:ascii、unicode与utf-8
转自:https://foofish.net/unicode_utf-8.html 阮一峰老师对普及计算机基础技术功不可没,但毕竟老师不是神,因此也避免不了对某些概念有一些错误的理解,<字符编码 ...
- 中文乱码之《字符编码:ASCII,Unicode 和 UTF-8》
参考文献:字符编码笔记:ASCII,Unicode 和 UTF-8 一.ASCII 码 我们知道,计算机内部,所有信息最终都是一个二进制值.每一个二进制位(bit)有0和1两种状态,因此八个二进制位就 ...
随机推荐
- 2019HDU多校第三场 K subsequence——最小费用最大流
题意 给定一个 $n$ 个整数的数列,从中至多选取 $k$ 个上升子序列(一个元素最多被选一次),使得选取的元素和最大. 分析 考虑这个问题和经典网络流问题“最长不下降子序列”相似,我们考虑对这个建图 ...
- WCF学习笔记二
客户端调用WCF服务出现以下错误: “/”应用程序中的服务器错误. 远程服务器返回错误: (415) Unsupported Media Type. 说明: 执行当前 Web 请求期间,出现未经处理的 ...
- P4317 花神的数论题 动态规划?数位DP
思路:数位$DP$ 提交:5次(其实之前A过,但是调了调当初的程序.本次是2次AC的) 题解: 我们分别求出$sum(x)=i$,对于一个$i$,有几个$x$,然后我们就可以快速幂解决. 至于求个数用 ...
- spring boot项目接入xxl-job
关于分布式任务调度平台XXL-JOB,作者 许雪里 在其发布的中文教程中已经介绍的很清楚了,这里就不做过多的介绍了.按照文档搭建xxl-job,做此纪录. 1.源码下载地址 GitHub:https: ...
- 047_批量下载有序文件(pdf、图片、视频等等)
#!/bin/bash#本脚本准备有序的网络资料进行批量下载操作(如 01.jpg,02.jpg,03.jpg)#设置资源来源的域名连接 url="http://www.test.com/& ...
- java.sql.SQLException: 不支持的字符集 (在类路径中添加 orai18n.jar): ZHS16GBK
在pom.xml文件中添加如下依赖: <!-- https://mvnrepository.com/artifact/cn.easyproject/orai18n --> <depe ...
- js 跨域请求原理及常见解决方案
一.同源策略: 说到跨域请求,首先得说说同源策略: 1995年,同源政策是由 Netscape 公司引入浏览器的.目前,所有浏览器都实行了这个政策. 同源策略是浏览器的一种安全策略,所谓同源是指,域名 ...
- [Luogu] 稳定婚姻
https://www.luogu.org/problemnew/show/1407 tarjan求一下强连通分量,然后判断一下两个人是否在同一强连通分量中 #include<iostream& ...
- 区间DP小结 及例题分析:P1880 [NOI1995]石子合并,P1063 能量项链
区间类动态规划 一.基本概念 区间类动态规划是线性动态规划的拓展,它在分阶段划分问题时,与阶段中元素出现的顺序和由前一阶段的那些元素合并而来由很大的关系.例如状态f [ i ][ j ],它表示以已合 ...
- 动态拼接tr,th
var dltable=''; // <c:forEach items="data" var="data" ></c:forEach> ...