URL 编码

URI规则简介

 RFC3986文档规定,URI中只允许包含英文字母(a-zA-Z)、数字(0-9)、-_.~ 4个特殊字符以及所有保留字符。

保留字符:

reserved    = gen-delims / sub-delims

gen-delims  = ":"  "/"  "?"  "#"  "["  "]"  "@"

sub-delims  = "!" "$"  "&"  "'"  "("  ")" "*" "+"  ","  ";"  "="

未保留字符:

unreserved  = 字母 / 数字 / "-" / "." / "_" / "~"

不安全字符:

  • 空格。
  • #:通常用于表示书签或者锚点
  • %:百分号本身用作对不安全字符进行编码时使用的特殊字符
  • 除保留字和未保留字符之外的其他字符

百分号编码

百分号编码的八位字节被编码为字符
三元组,由百分号“%”后跟两个
十六进制数字组成,后者表示该八位字节的数值。

pct-encoded = "%" HEXDIG HEXDIG

对于未保留字符,编码和不编码是等效的,即解析程序的解析结果是一致的。由于不安全字符可能引起解析程序的歧义,就需要对不安全字符进行百分号编码。

URL 编码

Url编码通常也被称为百分号编码。

Unicode 了解

简介

Unicode(世界统一码)是由世界统一码联盟制定的一套字符编码,其中包含了世界绝大部分的语言文字,还包含了表情文字。在Unicode 2.0之后(最新Unicode 11.0),Unicode编码与UCS(Universal Coded Character Set)基本保持一致。Uincode 版本列表,点击查看

Unicode 编码提供了一组基本单元编码,为每个基本单元分配一个唯一的编码点(Code Point)。一个文本元素是有一个或多个基本单元组成。例如法语中的Ç 可以看做是由 C 和¸ 组合成的。

名词解释

  • Basic Multilingual Plane (BMP) 基础多语言层面
  • Supplementary Multilingual Plane (SMP) 多语言补充层皮
  • Supplementary Ideographic Plane (SIP) 表意文字补充平面
  • Supplementary Special-purpose Plane (SSP) 特别用途补充平面
  • Private Use Area-A Plane (PUA-A) 私人使用区-A平面
  • Private Use Area-B Plane (PUA-B) 私人使用区-B平面
  • CJK 中国、日本、韩国 三个国加的简称
  • CJKV 中国、日本、韩国、越南 四个国加的简称
  • RTL right-to-left 从右到左
  • BE big-endian 大端序列, 高位在前(低地址),低在后(高地址)
  • LE little-endian 小端序列, 一个单元在计算机中的存放时按照低位在前(低地址),高位在后(高地址)的模式存放。

分配情况

整体

BMP 分配情况

图片截自UnicodeStandard-11.0.pdf

基础层面中D800-DFFF 区间为代理区间,区间内的代码点不表示任何字符。一个UTF-16编码只能表示BMP中的字符,无法表示BMP外的其他层面。通过代理区我们可以使用两个UTF-16编码来表示BMP外层面的一个字符。

SMP 分配情况

图片截自UnicodeStandard-11.0.pdf

编码的实现方式

计算机处理信息的最小单元为字节,而一个字节无法表示Unicode中的所有字符。为了表示所有的字符,就需要一种实现方式将Unicode中的字符编码转换为计算机可以处理的字节序列。

Unicode编码的实现方式有:

  • UTF-8
  • UTF-16
  • UTF-32
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×