编码

字符集与编码

字符集对应多种编码方案。

1. ASCII

  • 全称:美国信息交换标准码
  • 编码范围:使用7位来表示每个字符,总共可以编码128个字符。
  • 适用范围:主要适用于英文字符。

2. ISO-8859系列

  • 全称:国际标准化组织的信息交换标准化码。
  • 编码范围:使用8位(一个字节)来表示每个字符,总共可以编码256个字符。
  • 适用范围:每个ISO-8859的子集(如ISO-8859-1,ISO-8859-2等)设计用来支持特定的语言群体,例如ISO-8859-1(也称为Latin-1)适用于大多数西欧语言。

3. Unicode

  • 全称:统一码,旨在包含所有已知字符集的字符。
  • 编码方案: Unicode定义了几种不同的编码方案,以适应不同的存储和传输需求,包括UTF-8、UTF-16和UTF-32。
    • UTF-8:使用1到4个字节来表示每个字符,与ASCII兼容,广泛用于网页和电子邮件等。
    • UTF-16:使用2个或4个字节来表示每个字符,主要用于现代的操作系统和环境,如Windows和Java平台。
    • UTF-32:使用4个字节来表示每个字符,每个Unicode字符映射到一个固定的数值,但不如UTF-8或UTF-16高效。

编码方案兼容性

不论是ASCII、ISO-8859-1还是UTF-8编码,字符a的编码值都是97。这种一致性是故意设计的,以确保在不同编码标准之间具有良好的兼容性,特别是对于那些常用的英文字符。这也体现了UTF-8编码的一个重要优势:它在表示常用英文字符时与历史上广泛使用的ASCII编码兼容。

Base64编码

Base64是一种用64个字符来表示任意二进制数据的方法。

encodeURIComponent

当查询参数中包含特殊字符如&, =...容易导致歧义,如localhost?name=xxx&zzz=,真实意图是查询name 为 xxx&zzz=的数据,服务器则会错误解析这个请求,解析为name=xxx, zzz=两部分。为了避免服务器错误的解析,引入了encodeUriComponent,将特殊字符转义为%编码。encodeURIComponent("xxx&zzz") 结果为 xxx%26zzz%3D,服务端需要使用decodeURIComponent('xxx%26zzz%3D')。

  • 除了字母数字,特定字符 - . ( ...其它都会编码;
  • 用于编码参数

encodeUri

假如你有一个含有空格的URL路径,你希望将其转换为有效的URI。这时候使用encodeURI就很合适。

原始字符串:http://example.com/文章 标题
使用encodeURI后:http://example.com/%E6%96%87%E7%AB%A0%20%E6%A0%87%E9%A2%98

  • 除了字母数字,特定字符 - . ( ...,属于URI的特殊字符 / # & :..其它都会编码
  • 用于编码整个URI
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容