常用编码格式整理

14 篇文章 1 订阅
订阅专栏

什么是字符集,字符编码,编码和解码:

字符集
将一些自然语言中的字符组成一个集合;
字符编码
字符编码,就是建立一套自然语言中的“字符”跟计算机能够存储 处理的二进制数的映射的规则。
即在一个字符集内,用一个特定的二进制数表示一个唯一“字符”,类似于学号跟学生的映射关系。
为什么需要编码
当数据不利于处理、存储的时候,就需要对它们进行编码。
对字符进行编码是因为自然语言中的字符不利于计算机处理和存储。
编码和解码
根据实际需求的差异,编码、解码算法有可能会很复杂,也有可能非常的简单,
但是从根本上来讲,编码、解码只是在做翻译工作,将一种形式的数据翻译为另一种形式的数据,
如,最简单的编码、解码就是相当于从一个Map中根据key查找value,然后使用value代替实际数据中的key的值。

ASCII编码

ASCII 码一共定义了 128 个字符,例如大写的字母 A 是 65(这是十进制数,对应二进制是0100 0001)。这 128 个字符只使用了 8 位二进制数中的后面 7 位,最前面的一位统一规定为 0。

在这里插入图片描述

GBK编码

中国人为了能够正常使用计算机这一伟大方明,做出了多方面的努力。GB2312 就是这一努力的成果, 该标准于1980年发布,1981年5月1日开始实施。它标志着我国在使用电子计算机方面迈出了重要的一步。GB2312 编码共收录了6763个汉字,同时还兼容 ASCII。这一字符编码基本满足了汉字的计算机处理需要,它所收录的汉字已经覆盖中国大陆 99.75% 的使用频率,然而对一些古汉语和繁体字 GB2312 没法处理。
1995 年发布的GBK 的编码,是对 GB2312 的补充和扩展。GBK 不仅收录了 GB2312 中的全部汉字、非汉字符号,同时还收录了日韩语中出现的汉字,如韩国著名围棋手李世乭中的乭 GBK 编码是 0x8168(0x表示16进制)。这里可以查询汉字对应的 GBK 编码。
GBK 编码一般用两个字节表示一个字符,如果是英文字母,则使用一个字符,与ASCII编码相同,因此,GBK 也是兼容 ASCII 编码的,但并不与任何扩展的ASCII编码兼容。这可以从它的编码序列看出来。
GBK 采用双字节表示,总体编码范围为 0x8140-0xFEFE(1000000101000000-1111111011111110),首字节在 0x81-0xFE 之间,尾字节在 0x40-0xFE之间。可以看出首字节最高位都为1,这样一来,如果一个连续的二进制串中,尾字节之后的字节最高位为0,那么就可以解析为一个ASCII编码字符,否则就是一个连续的二字节字符。

Unicode编码

Unicode编码是为了囊括所有语言中的字符制定的,它规定了每一个字符所对应的唯一的二进制代码,称之为码点(code point)。Unicode是一个很大的集合,目前的规模可以容纳100多万个符号。
这么多符号,Unicode不是一次性定义的,而是分区定义。每个区可以存放 65536个( 216 )字符,称为一个平面(plane)。目前,一共有17个平面。
最前面的65536个字符位,称为基本平面(缩写BMP),它的码点范围是从0一直到 216 -1,写成16进制就是从U+0000到U+FFFF。所有最常见的字符都放在这个平面,这是Unicode最先定义和公布的一个平面。
剩下的字符都放在辅助平面(缩写SMP),码点范围从U+010000一直到U+10FFFF。

每个符号的编码都不一样,这么多的字符,想要以二进制形式表示,就需要比较多的字节才能够一一对应。标准的 Unicode(也就是第一个平面,BMP)采用4个字节表示一个字符串。比如,U+0639 表示阿拉伯字母 Ain,U+0041 表示英语的大写字母 A,U+4E6D 表示汉字"乭 "。显然,Unicode 和 GBK 是不兼容的。
Unicode 没有规定字符对应的二进制码如何存储。以汉字“汉”为例,它的 Unicode 码点是u+0x6c49,对应的二进制数是 110110001001001,二进制数有 15 位,这也就说明了它至少需要 2 个字节来表示。可以想象,在 Unicode 字典中往后的字符可能就需要 3 个字节或者 4 个字节,甚至更多字节来表示了。

这就导致了一些问题,计算机怎么知道你这个 2 个字节表示的是一个字符,而不是分别表示两个字符呢?这里我们可能会想到,那就取个最大的,假如 Unicode 中最大的字符用 4 字节就可以表示了,那么我们就将所有的字符都用 4 个字节来表示,不够的就往前面补 0。这样确实可以解决编码问题,但是却造成了空间的极大浪费,如果是一个英文文档,那文件大小就大出了 3 倍,这显然是无法接受的。
于是,为了较好的解决 Unicode 的编码问题, UTF-8 和 UTF-16 两种当前比较流行的编码方式诞生了。当然还有一个 UTF-32 的编码方式,也就是上述那种定长编码,字符统一使用 4 个字节,虽然看似方便,但是却不如另外两种编码方式使用广泛。

UTF-8

UTF-8 是 Unicode 的一种实现方式,它规定了使用 Unicode 编码的字符如何存储和传输。UTF-8 是目前互联网上使用最广泛的一种 Unicode 编码方式,它的最大特点就是可变长。它可以使用 1 - 4 个字节表示一个字符,根据字符的不同变换长度。编码规则如下:
1、对于单个字节的字符,第一位设为 0,后面的7位对应这个字符的 Unicode 码点。因此,对于英文中的 0 - 127 号字符,与 ASCII 码完全相同。这意味着 ASCII 码那个年代的文档用 UTF-8 编码打开完全没有问题。
2、对于需要使用 N 个字节来表示的字符(N > 1),第一个字节的前 N 位都设为 1,第 N + 1 位设为0,剩余的 N - 1 个字节的前两位都设位 10,剩下的二进制位则使用这个字符的 Unicode 码点来填充。

编码规则如下:
Unicode 十六进制码点范围 UTF-8 二进制
0000 0000 - 0000 007F 0xxxxxxx
0000 0080 - 0000 07FF 110xxxxx 10xxxxxx
0000 0800 - 0000 FFFF 1110xxxx 10xxxxxx 10xxxxxx
0001 0000 - 0010 FFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

根据上面编码规则对照表,进行 UTF-8 编码和解码就简单多了。下面以汉字“汉”为利,具体说明如何进行 UTF-8 编码和解码。
“汉”的 Unicode 码点是 0x6c49(110 1100 0100 1001),通过上面的对照表可以发现,0x0000 6c49 位于第三行的范围,那么得出其格式为 1110xxxx 10xxxxxx 10xxxxxx。接着,从“汉”的二进制数最后一位开始,从后向前依次填充对应格式中的 x,多出的 x 用 0 补上。这样,就得到了“汉”的 UTF-8 编码为 11100110 10110001 10001001,转换成十六进制就是 0xE6 0xB1 0x89。

解码的过程也十分简单:如果一个字节的第一位是 0 ,则说明这个字节对应一个字符;如果一个字节的第一位1,那么连续有多少个 1,就表示该字符占用多少个字节。

HTML实体编码(HTML_ENTITY)

在 HTML 中,某些字符是预留的,在 HTML 中不能使用小于号(<)和大于号(>),这是因为浏览器会误认为它们是标签。 如果希望正确地显示预留字符,我们必须在 HTML 源代码中使用字符实体(character entities)。
HTML实体编码主要用于输出某些无法作为普通文本显示的字符。HTML 实体是一段以连字号(&)开头、以分号(;)结尾的文本(字符串)。实体常常用于显示保留字符(这些字符会被解析为 HTML 代码)和不可见的字符(如“不换行空格”)。
(1)部分字符在html文件中作为html结构解析
(2)某些字符被特殊处理,比如空格
(3)某些字符无法直接输入,比如带声调符号

常用实体编码:
实体编号(HTML_CODE)和实体编码作用相同,也可以用来帮助浏览器识别预留字符。对于ASCLL码的转换前127都可以&#0~127;实体编号来一一对应。
十六进制实体编号(HEX_CODE)将实体编号改成16进制格式。

在这里插入图片描述

在前端,一般为了避免 XSS 攻击,会将 <> 编码为 < 与 >,这些就是 HTML 实体编码。网站后台的识别仅仅针对字符串,而浏览器解析的时候又可以将其还原,因此可以达到绕过的效果。
浏览器总是会截短 HTML 页面中的空格,如果您在文本中写 10 个空格,在显示该页面之前,浏览器会删除它们中的 9 个,如需在页面中增加空格的数量,您需要使用   字符实体。

URL编码

URL 之所以需要编码,是因为 URL 中的某些字符会引起歧义,比如若 URL 查询参数中包含”&”或者”%”就会造成服务器解析错误,再比如,URL 的编码格式采用的是 ASCII 码而非 Unicode,这表明 URL 中不允许包含任何非 ASCII 字符(比如中文),否则就会造成 URL 解析错误。URL 编码的原则是使用安全字符(即没有特殊用途或者特殊意义的字符)去表示那些不安全的字符。
对于非ASCII字符,RFC文档建议使用utf-8对其进行编码得到相应的字节,然后对每个字节执行百分号编码。如"中文"使用UTF-8字符集得到的字节为0xE4 0xB8 0xAD 0xE6 0x96 0x87,经过URL编码之后得到"%E4%B8%AD%E6%96%87"。
由于URL中好多字符是保留字,他们在URL中具有特殊的含义。如“&”表示参数分隔符,如果想要在URL中使用这些保留字,那就得对他们进行编码。
1、对URL中属于ASCII字符集的非保留字不做编码;
2、对URL中的保留字需要取其ASCII内码,然后加上“%”前缀将该字符进行替换(编码);
3、对URL中的非ASCII字符需要取其Unicode内码,然后加上“%”前缀将该字符进行替换(编码)。

由于这种编码是采用“%”加上字符内码的方式,所以,有些地方也称其为“百分号编码”。URL中的保留字符包括:! * ’ ( ) ; : @ & = + $ , / ? # [ ]

CSS特殊符号

CSS中有一些特殊符号,需要在编号前面加上反斜杠“”进行转义,比如说“向左箭头”符号对应的CSS编号是:“21E0”,那么在文档中需要写成“\21E0”;

常用字符编码对照表

在这里插入图片描述

彻底弄懂 Unicode 编码
HTML特殊字符编码对照表(最全特殊字符编码)
Unicode 字符百科
你所不知道的unicode字符编码
URL编码是什么?
基础概念——URL编码

常见编码格式总结
weixin_61006262的博客
07-09 2986
这些编码格式分别用于表示和传输网页数据、样式数据和数据交换格式等。编码格式是指用于编写和组织代码的标准和规范。此外,还有一些特定领域的编码格式,如。
常见编码格式
weixin_39391878的博客
07-22 2598
1、ascii 计算机是美国人发明的,因此,最早只有127个字母被编码到计算机里,也就是大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码. ascii只占一个字节,00000000–01111111,一对一关系,二进制代表一个字符 2、GB2312-80 只需要记住这个是我国发明的,包含了常用汉字和拉丁字母、平假名等,占两个字节,一对一关系,一个二进制码对应一个文字 3、Unicode 各个国家都像我们一样,有自己的编码方式,在自己国家使用没有问题,但是国家与国家之间交流的时候就.
设置文件的编码格式
最新发布
weixin_43803780的博客
05-02 420
**行业趋势**:随着Unicode的普及,UTF-8已经成为事实上的标准编码,许多新的软件和服务都默认或强烈推荐使用UTF-8。- **文件交换标准**:对于需要与其他系统、软件或用户交换的文件,应遵循相关标准或协议指定的编码格式,以确保数据的互操作性。- **性能**:对于大量数据处理、搜索或索引的场景,某些编码格式可能提供更好的性能。- **创建和编辑工具**:确保所使用的文本编辑器、编程IDE、办公软件等支持您选择的编码格式,并能够在打开、编辑和保存文件时正确处理。
常见编码格式&编码格式转换详解
信仰的博客
10-29 5627
编码格式详解一.常见的几种编码格式1.ASIIC2.GB23123.GBK4.Unicode5.UTF8二.GBK和UTF8的相互转换附录 一.常见的几种编码格式 1.ASIIC 最早的计算机使用的编码方式,使用一个字节表示一个字符; 特点 用0-127(7位)表示一个字符 2.GB2312 计算机流入中国后,因为ASIIC只使用一个字节表示字符,而汉字有好几千个,1个字节无法满足表示所有汉字的需求。 特点 ①用双字节表示一个汉字,单字节表示一个英文字符(保持和ASIIC一致) ②一个小于127的字符的意义
了解11种常见的字符编码格式及其使用场景,让数据传输不再出现问题
DaenCode的博客
07-28 2278
在有一次SDK开发中,方法间数据传输出现了问题,由于返回数据采用的数据编码格式不一致会导致数据长度发生变化。因此整理常用的字符编码格式,减少出现问题的概率。
集中常见的编码格式
Ccyy325108的博客
11-29 2347
目录 1.Assic 是单字节编码 2.GB2312是中国规定的汉字编码 3.GBK 4.Unicode 5.UTF-8是动态的编码方式 1.Assic 是单字节编码 ASCII码是计算机中用得最广泛的字符集及其编码。二进制数可以表示2种状态:0、1;而2位二进制数可以表示(2=)4种状态:00、01、10、11;依次类推,7位二进制数可以表示(2=)128种状态,每种状态都唯一地编为一个7位的二进制码,对应一个字符(或控制码),这些码可以排列成一个十进制序号0~127。所以,7位ASC.
常用HS编码整理.pdf
10-02
在本文中,我们将对 HS 编码进行整理和解释,着重介绍常用的 HS 编码。 一、钢铁制品 * HS 编码 7306:钢管,包括不锈钢和其他材料的圆形截面细钢管。 * HS 编码 7304:其他管道管,包括石油或天然气用的套管和...
万能 批量编码格式转换器
05-08
GB2312、GBK是中国大陆常用的简体中文编码;Big5则主要应用于繁体中文;而UTF(Unicode Transformation Format)家族则支持全球几乎所有的字符,包括各种语言的文字。 2. **转换需求**:在处理跨语言、跨平台的文本...
五笔常用的1500字整理
06-26
标题中的“五笔常用的1500字整理”是指针对五笔输入法的学习资源,它包含1500个常用汉字,按照从易到难的顺序分成了三个部分,每部分包含500个字。描述中提到这些字被分在24页文档中,并提供了多种练习方法,包括...
计算机常用编码.txt
06-30
这些就是随便整理常用编码 这只是目前接触到的 还有很多编码 我都没有写 你们自己看吧 多的我就不多说了 下载 会不吃亏的
自己函数整理 php常用
05-12
- `sprintf()`: 格式化字符串输出,支持占位符。 掌握这些PHP函数有助于编写更高效、可维护的代码。在实际开发中,根据需求选择适当的函数可以提高代码的效率和安全性。不断学习和积累新的函数,能让你在PHP编程...
深入分析 Java 中的中文编码问题(1)
上善若水
11-08 1129
几种常见的编码格式 为什么要编码 不知道大家有没有想过一个问题,那就是为什么要编码?我们能不能不编码?要回答这个问题必须要回到计算机是如何表示我们人类能够理解的符号的,这些符号也就是我们人类使用的语言。由于人类的语言有太多,因而表示这些语言的符号太多,无法用计算机中一个基本的存储单元—— byte 来表示,因而必须要经过拆分或一些翻译工作,才能让计算机能理解。我们可以把计算机能够理解的语言假定...
一些常见的编码
weixin_44300286的博客
08-21 4734
前言: 学了那么久的编码,之前一直都没有时间整理,现在来总结一下。 1、base家族 1.1、base16 就是16进制,编码内容只有数字0-9,和大写英文字母A-F 1.2、base32 编码内容只有大写英文字母A-Z,和数字234567 1.3、base64 编码内容主要有大写英文字母A-Z,小写英文字母a-z,数字0-9,+和/ 2、凯撒密码 凯撒密码主要通过偏移来实现加密,偏移量是几,密...
常见的几种编码
Relievedz的博客
02-02 2946
1.编码是系统惟一识别每个、某类信息的依据;2.编码是进行信息分类、校核、合计、检索的关键字;3.编码可克服项目参差不齐的缺点,节省内存与外存空间;
各种编码格式(GB2312,GBK,GB18030,unicode,utf-8)之间的关系
热门推荐
guoweilkd的博客
03-17 1万+
汉字常用编码格式 为了在屏幕上显示字符。需要下面几个步骤: 制作所有字符对应的字模。比如大写字母A长什么样。这个模样就是最终显示在屏幕上图形,即我们看到的字符A。 为对所有的字符进行编码。比如大写字母A的编码为0x41. 由于字符的数量远大于一个字节,所以当字符编码进行存储、传输时,需要给它们指定格式。如怎样确定某个字符的编码是一字节还是多字节。如0xC0 0xEE代表一个字符的编码(0xC0E...
lmdb.Error:“路径“+:���̿ռ䲻�㡣
GZKPeng的博客
09-10 5544
一开始因为报的异常带乱码,所以以为是编码格式的问题,后来发现并不是,查看报异常位置: env = lmdb.open(outputPath, map_size=1099511627776) 第一个参数是路径,第二个参数是指定创建的新数据库所需磁盘空间的最小值。 考虑OOM,把map_size改小,问题解决 ...
常用五种编码方式总结(ASCII,UnicodeUTF-8,GB123,Base64)
LCW991207的博客
09-05 7076
ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是一种常见的字符编码系统,定义了128个数字编码,包括字母、数字、标点符号和控制字符等。每个字符用一个7位的二进制数表示。ASCII码表中的字符从0到127,其中0到31为控制字符(如回车、换行等),32到127为可显示字符(如大写字母、小写字母、数字和标点符号)。当我们要将字符转换为对应的ASCII码时,可以使用编程语言提供的函数或方法来实现。
Python入门记录(11)字符串
qq_36188160的博客
04-15 159
代码: # 项目名:pythonProject2 # NAME:demo14 # 开发时间:2021/4/15 18:00 #字符串 #字符串驻留机制 s1 = 'abc' s2 = 'ab'+'c' #在程序编译前完成计算 s3 = 'ab'.join('c') #在编译过程中进行计算所以指针不同 print(id(s1)) print(id(s2)) print(id(s3)) print(s1 is s2) print(s1 is s3) #字符串的常用操作 s = 'hello,hello,HEY
汉字的编码|ASCII|GBK|Unicode|UTF-8详解
白帽阿叁的博客
08-14 1万+
字符集:是一个系统支持的所有抽象字符的集合。字符是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。字符编码:在符号集合与二进制之间建立对应关系常用的字符集:ASCII字符集、GB2312字符集、BIG5字符集、GBK字符集、GB18030字符集、Unicode字符集等。
整理收集的一些常用java工具类
07-12
10. 加密解密工具类:提供常用的加密解密算法,如MD5加密、BASE64编码等。 以上是一些常用的Java工具类,可以根据项目需求和具体场景选择使用。这些工具类可以节省开发时间、提高代码质量,是Java开发中必不可少的...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • Java常用消息队列原理介绍及性能对比 93197
  • Map.Entry学习和详解 51246
  • Linux下实现C语言的http请求实现 32073
  • Logstash概念与原理、与Flume的对比 23798
  • 5G控制面协议之N2接口 17831

分类专栏

  • 安全防护 14篇
  • apisix源码学习 4篇
  • Openresty 9篇
  • Lua学习 4篇
  • 5G 3篇
  • 编程工具 10篇
  • Java开发 28篇
  • JVM 3篇
  • 云原生 10篇
  • sdn 10篇
  • 设计模式 6篇
  • 大数据 3篇

最新评论

  • 离线安装apisix

    种水稻: 需要的包可以提供下?

  • Centos7安装使用libvirt

    qq_58215721: make -j4 报错啊哥怎么回事

  • 离线安装apisix

    网络与安全技术探索: 我是源码安装的,这个类似于源码打包的。。因为我做了点代码改动,不过你要把编译之后的依赖包带上,就是安装之后的那个deps文件夹

  • 离线安装apisix

    fnke0125: 大佬,apisix-master zip 安装包哪里下呀,你没写

  • Java常用消息队列原理介绍及性能对比

    $初学者¥: 笑死我了

大家在看

  • 监控平台zabbix介绍与部署

最新文章

  • 什么是慢速攻击?
  • WebSocket从入门到精通
  • 离线安装apisix
2023年3篇
2022年21篇
2021年4篇
2020年9篇
2019年11篇
2018年13篇
2017年44篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

PHP网站源码吉祥品牌网站设计吉祥seo网站优化盐田网站推广系统大运百度seo民治百姓网标王推广木棉湾优秀网站设计双龙关键词按天扣费大鹏网站推广工具吉祥品牌网站设计南澳模板网站建设福永设计公司网站吉祥网站优化排名大芬标王大鹏营销网站坑梓阿里店铺运营广州网站优化排名观澜网站搭建横岗建站龙岗关键词按天扣费坪地网站改版塘坑网站搜索优化荷坳百度seo宝安网站搜索优化永湖营销型网站建设观澜SEO按天扣费爱联网站推广系统石岩百度网站优化南联网站搭建深圳网站优化按天收费坪地高端网站设计歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

PHP网站源码 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化