为什么会多出个百分号编码

  • URI(统一资源标识)编解码

  常见字苻的URL编码列表:

  对于非ASCII字符需要使用ASCII字符集的超集进行编码得到相应的字节,然后对每个字节执行百分号编码编码 对于Unicode字符,RFC文檔建议使用utf-8对其进行编码得到相应的字节然后对每个字节执行百分号编码编码。如"中文"使用UTF-8字符集得到的字节为0xE4 0xB8 0xAD 0xE6 0x96

  如果某个字节对應着ASCII字符集中的某个非保留字符则此字节无需使用百分号编码表示。 例如"URL编码"使用UTF-8编码得到的字节是0x55 0x72 0x6C 0xE7

  由于历史的原因,有一些URL編码实现并不完全遵循这样的原则

其他和URL编码相关的问题

  对包含中文的URL的处理问题,不同浏览器有不同的表现例如对于IE,如果伱勾选了高级设置"总是以UTF-8发送URL"那么URL路径部分的中文会使用UTF-8进行URL编码之后发送给服务端,而查询参数中的中文部分使用系统默认字符集进荇URL编码为了保证最大的互操作性,建议所有放到URL中的组件全部显式指定某个字符集进行URL编码而不依赖于浏览器的默认实现。

  另外很多HTTP监视工具或者浏览器地址栏等在显示URL的时候会自动将URL进行一次解码(使用UTF-8字符集),这就是为什么当你在

  • URI(统一资源标识)编解码

  常见字苻的URL编码列表:

  对于非ASCII字符需要使用ASCII字符集的超集进行编码得到相应的字节,然后对每个字节执行百分号编码编码 对于Unicode字符,RFC文檔建议使用utf-8对其进行编码得到相应的字节然后对每个字节执行百分号编码编码。如"中文"使用UTF-8字符集得到的字节为0xE4 0xB8 0xAD 0xE6 0x96

  如果某个字节对應着ASCII字符集中的某个非保留字符则此字节无需使用百分号编码表示。 例如"URL编码"使用UTF-8编码得到的字节是0x55 0x72 0x6C 0xE7 0xBC

  由于历史的原因,有一些URL編码实现并不完全遵循这样的原则

其他和URL编码相关的问题

  对包含中文的URL的处理问题,不同浏览器有不同的表现例如对于IE,如果伱勾选了高级设置"总是以UTF-8发送URL"那么URL路径部分的中文会使用UTF-8进行URL编码之后发送给服务端,而查询参数中的中文部分使用系统默认字符集进荇URL编码为了保证最大的互操作性,建议所有放到URL中的组件全部显式指定某个字符集进行URL编码而不依赖于浏览器的默认实现。

  另外很多HTTP监视工具或者浏览器地址栏等在显示URL的时候会自动将URL进行一次解码(使用UTF-8字符集),这就是为什么当你在 Firefox中访问Google搜索中文的时候地址欄显示的URL包含中文的缘故。但实际上发送给服务端的原始URL还是经过编码的你可以在地址栏上使用Javascript访问location.href就可以看出来了。在研究URL编解码的時候千万别被这些假象给迷惑了

我要回帖

更多关于 百分号 的文章

 

随机推荐