在使用%XXs在url中编码之前,HTTP标准或某些内容是否定义了特殊字符应使用哪种编码?如果没有定义是否有定义使用哪种编码的方法?似乎大多数浏览器都以utf-8发送数据.
bob*_*nce 26
在使用%XXs在url中编码之前,HTTP标准或某些内容是否定义了特殊字符应使用哪种编码?
HTTP标准,没有.但另一个标准IRI可以发挥作用.
URI是显式的(一旦%解码)字节序列.这些字节映射到的Unicode字符未由URI标准或http:-scheme URI的HTTP标准指定.
特别是对于查询参数:Web浏览器将使用原始页面的编码来生成表单提交GET URL,因此如果您有一个ISO-8859-1中的页面,并且您将'é'放在搜索框中,您将获得' ?search =%E9',但是如果你在编码为UTF-8的页面中做同样的事情,你会得到'?search =%C3%E9'.如果你没有为你的表单页面提供任何特定的字符集,那么浏览器就会猜到,这是你不想要的,因为这样就无法猜出提交的格式是什么样的.
对于URL的其他部分,浏览器本身不会生成它们,但如果在链接中提供非ASCII字符,它通常会将它们编码为UTF-8.这不可靠,因为它取决于浏览器和区域设置,所以最好不要使用此功能.
IRI中适当允许链接中非ASCII字符的标准.IRI通过UTF-8转换为URI - % - 编码大部分URL,但主机名使用Punycode进行转换.为了兼容性,最好不要依赖浏览器了解链接中的IRI.相反,UTF-8-then - % - 自己编码路径和参数字符.它们仍将在现代浏览器的地址栏中显示为正确的字符; 遗憾的是,IE不会在所有情况下显示解码字符IRI表单,具体取决于语言设置.
希腊伽玛角色的Wiki IRI是:
http://en.wikipedia.org/wiki/?
Run Code Online (Sandbox Code Playgroud)
编码为URI,它是:
http://en.wikipedia.org/wiki/%CE%93
Run Code Online (Sandbox Code Playgroud)