您当前的位置:首页 > 计算机 > 文件格式与编码

常见编码格式汇总

时间:11-06来源:作者:点击数:

前言

什么是编码呢?计算机只认识0和1,将我们知道的字符翻译成计算机认识的语言,即二进制,这个过程称之为编码。

编码格式

  1. ASCII编码
    使用8位二进制来编码,其中控制字符为不可见字符,而能够打印出来的为可见字符。
    在这里插入图片描述
  2. Unicode编码
    Unicode又称为万国符,可以表示世界上的所有字符,编号范围从 0x000000 到 0x10FFFF (十六进制),大概有110多万个。每个字符都有唯一的编号,一般是用十六进制表示,并在前面加上\u。比如"国"的Unicode编码是\u56fd
    但Unicode只是一个庞大的字符集,并没有规定存储方式,所以会有以下两个问题
    1、计算机无法区别Unicode 和 ASCII,比如有两个字节,计算机不知道这是代表一个字符还两个字符。
    2、字母用一个字节就能存储,如果统一规定使用3或是4个字节表示一个字符的话,会造成资源的浪费。
    对此出现过许多存储方案,主要有UTF-8,UTF-16,UTF-32,其中UTF-8最为广泛使用的,所以重点了解UTF-8
  3. UTF-8
    UTF-8是使用最广的一种 Unicode 的实现方式
    特点:它是一种变长的编码方式,可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。
    UTF-8 的编码规则是:
    ① 对于单字节的符号,字节的第一位设为 0,后面的7位为这个符号的 Unicode 码
    ② 对于n字节的符号(n>1),第一个字节的前 n 位都设为 1,第 n+1 位设为 0,后面字节的前两位一律设为 10,剩下的没有提及的二进制位,全部为这个符号的 Unicode 码 。
    具体的 Unicode 编号范围与对应的 UTF-8 二进制格式如下图
    在这里插入图片描述
    格式转换如下
    "马"对应的unicode编码00009A6C 和utf-8编码E9A9AC,具体转换规则如下图
    在这里插入图片描述
  4. URL编码
    (1)、URL编码的作用:解决歧义和解决不安全字符
    (2)、HTTP协议传参过程中需要某些特殊字符来起分隔作用。比如"?name1=value1&name2=value2",其中 “&” 用来分隔不同参数,而 “=” 则是分隔参数值。
    但如果url参数中包含特殊字符呢?比如"name1=aa&bb=cc",“aa&bb=cc"是一个参数值,但服务器会解读为两个键值对,造成歧义。
    而url编码就是在特殊字符对应ASCII值得前面加上%,将上面歧义的语句编码为"name1=aa%23bb%3dcc”。其中 “&” 对应 “%23”,"=" 对应 “%3d”。这样服务器会把紧跟在”%”后的字节当成普通字节,不会当成各个参数或键值对的分隔符。
    (3)、一般URL地址栏很少看到中文,因为也是被URL编码了。比如”中文”使用UTF-8编码得到的字节是0xE4 0xB8 0xAD 0xE6 0x96 0x87,经过URL编码之后得到%E4%B8%AD%E6%96%87
  5. HTML编码
    HTML编码即HtmlEncode,主要是转换HTML页面中的特殊字符,用来防御XSS攻击
    主要对以下特殊字符做转换
    在这里插入图片描述
    举例:用户输入<script>alert('xss')</script>,如果前后端没有做限制的情况下原样输出,浏览器会把它当成js脚本,会弹出一个提示框。使用HtmlEncode编码后,<被转换成&lt;,而>被转换成&gt;,这样浏览器就不会错误的识别成js脚本了,可以有效防御XSS攻击。
  6. JS编码
    常用的编码方式是使用4个16进制数字,如\uxxxx这种写法的unicode转义序列来表示一个字符,其中x代表16进制数字,例如e的编码为\u0065
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门