URL中文字符编码

来源:互联网 发布:php cdn ip 编辑:程序博客网 时间:2024/05/16 11:17

今天下载文件时,自己动手改的原来的链接地址,当输入火狐的地址栏时,发现直接在网址中加入的中文并不能自动转码成Unicode(我的火狐字符编码设置是Unicode (UTF-8)),搜索了很多方法,查阅了Unicode在URL中的编码方式,后来终于解决了。(比如输入网址“http://zh.wikipedia.org/wiki/春节”,访问后,复制火狐的地址栏中的此网址,就变成了"http://zh.wikipedia.org/wiki/%E6%98%A5%E8%8A%82"(IE没有此功能),春”和“节”的utf-8编码分别是“E6 98 A5”和“E8 8A 82”,因此,“%E6%98%A5%E8%8A%82”就是按照顺序,在每个字节前加上%而得到的。)

一般来讲,URL只能使用英文字母、阿拉伯数字和某些标点符号,而不能使用其他文字和符号。也就是说,只有字母和数字[0-9a-zA-Z]、一些特殊符号“$-_.+!*'(),”[不包括双引号]、以及某些保留字,才可以不经过编码直接用于URL。参见网络标准RFC 1738规定。

故解决方法如下:将地址中连续的中文字符和标点使用UrlEncode编码工具进行转码,如http://tool.chinaz.com/Tools/URLEncode.aspx中的编码工具。原网址中的英文与数字不需要转码,再将转码的部分改到原来的位置即可,再输入地址栏中就可以进行访问了。


更详细的解析参见:http://www.ruanyifeng.com/blog/2010/02/url_encoding.html

原创粉丝点击