URL 的编码

2018-03-22  本文已影响27人  yibuyisheng

什么是 URL

URL 就是用来定位资源的字符串。

怎么样的字符串是合法的 URL

满足如下条件的字符串都是合法的 URL:

注: Unicode 是字符集,而 UTF-8 是一种以8位为一个编码单位的可变长编码方式,定义了具体字符和 Unicode 码之间的相互转换规则。

URL 中不能包含非 ASCII 字符,所以在实际场景中,会将 URL 中的非 ASCII 字符转换为 ASCII 字符,采用的规则是:将非 ASCII 字符按照一定的编码方式( 典型的就是 UTF-8 )转换为 Unicode 中的码位,然后用码位对应数值的16进制形式,加上%号前缀,形成编码后的字符串,用这个字符串替换掉 URL 中对应的非 ASCII 字符串,就形成了合法的 URL 。

URL 的“合法化”

在浏览器环境中,主要存在如下需要“合法化” URL 的场景:

处理规则为:

注: 文档编码的确定方式,优先级由高到低的顺序为:

  • 浏览器加载到的 HTML 文件采用了带 BOM 的 UTF-8 编码,那么浏览器可以根据这个编码来确定整个文档的编码。
  • 在 HTML 文件对应的 HTTP 请求的响应头部里面指定了编码,比如content-type: text/html; charset=UTF-8,那么文档的编码就是此处指明的编码。
  • 在 HTML 代码里面使用 meta charset 指定编码,比如<meta charset="UTF-8">。此时要注意,一定要确保这个编码声明位于整个 HTML 文件的前1024 byte 之内,不然可能会造成浏览器无法正确读到编码值。
上一篇 下一篇

猜你喜欢

热点阅读