您好!欢迎访问家园网-www.jy.wang!

家园网

讲解一下JavaScript的incodeURI函数编码时是编译成什么代码

网络 作者:本站 点击:

JavaScript的encodeURI()函数在编码时会将非URL合法字符转换为UTF-8编码的十六进制表示形式,具体规则如下:

  1. 保留字符不编码‌:包括协议部分(如://)、查询参数分隔符(?)、路径分隔符(/)等URL元字符不会被编码。

  2. 例如:/?#等字符会保持原样输出。

  3. 编码非保留字符‌:对非URL合法字符(如空格、中文字符等)会转换为%后跟两位十六进制数的形式。例如空格编码为%20,汉字“中”编码为%E4%B8%AD(UTF-8编码的十六进制表示)。

  4. 不编码的字符范围‌:字母(A-Z/a-z)、数字(0-9)以及- _ . ! ~ * ' ( )等语义字符不会被编码。

encodeURIComponent()的区别在于,后者会编码所有非标准字符(包括URL分隔符),而encodeURI()仅编码可能破坏URL结构的非法字符。

例如:

encodeURI("http://example.com/测试") 
// 输出 "http://example.com/%E6%B5%8B%E8%AF%95"(仅编码中文)

底层实现上,JavaScript引擎(如V8)会通过UTF-8编码处理字符串,将每个非法字符的字节序列转换为%XX形式,但具体编译后的机器码因引擎实现而异。

标签: