URL地址
来源:互联网 发布:阿里云邮箱域名未验证 编辑:程序博客网 时间:2024/05/17 23:18
URL地址中含有中文字符是很麻烦的,前面描述过使用GET方法提交表单的情况,使用GET方法时,参数就是包含在URL中。
1.URL编码
对于URL中的一些特殊字符,浏览器会自动进行编码。这些字符除了"/?&"等外,还包括unicode字符,比如汉子。这时的编码比较特殊。
IE有一个选项"总是使用UTF- 8发送URL",当该选项有效时,IE将会对特殊字符进行UTF-8编码,同时进行URL编码。如果改选项无效,则使用默认编码"GBK",并且不进行 URL编码。但是,对于URL后面的参数,则总是不进行编码,相当于UTF-8选项无效。比如"中文.html?a=中文",当UTF-8选项有效时,将发送链接"%e4%b8%ad%e6%96%87.html?a=/x4e/x2d/x65/x87";而UTF-8选项无效时,将发送链接"/x4e/x2d/x65/x87.html?a=/x4e/x2d/x65/x87"。注意后者前面的"中文"两个字只有4个字节,而前者却有18个字节,这主要时URL编码的原因。
当web server(tomcat)接收到该链接时,将会进行URL解码,即去掉"%",同时按照ISO8859-1编码(上面已经描述,可以使用URLEncoding来设置成其它编码)识别。上述例子的结果分别是"/ue4/ub8/uad/ue6/u96/u87.html?a=/u4e/u2d/u65/u87"和"/u4e/u2d/u65/u87.html?a=/u4e/u2d/u65/u87",注意前者前面的"中文"两个字恢复成了6个字符。这里用"/u",表示是unicode。
所以,由于客户端设置的不同,相同的链接,在服务器上得到了不同结果。这个问题不少人都遇到,却没有很好的解决办法。所以有的网站会建议用户尝试关闭UTF-8选项。不过,下面会描述一个更好的处理办法。
opera中编码的方式:
我查阅了很多的资料才发现在opera这个浏览器中采用的编码方式是:
先用UTF8对字符串进行编码,然后按RFC1738进行编码
这是查到的文档中这样说明实际上采用的编码方式为:
首先对汉字的GBK编码转化成UTF-8编码,然后再采用urlcode的编码方式转化成url的汉字编码。
- URL地址
- URL 长链地址转短链 URL地址
- 有用的url地址
- url地址连接
- url地址重写
- URL地址重写
- php 完整url地址
- url编码地址
- java获取URL地址
- C#获取URL地址
- URL地址中的#符号
- php-url地址加密
- url地址静态化
- 获取请求URL地址
- js获取URL地址
- js 获取URL地址
- URL地址中的#符号
- svn 修改url地址
- BitComet 0.90 ED下载功能的插件下载地址
- DELPHI线程类挂起的问题
- 喝酒的艺术
- javascript打印-打印页面设置-打印预览代码,特定内容的部分打印技术
- 小心防范网页木马
- URL地址
- 一个有意义的故事(名字忘了,呵呵)
- 手工注册或取消注册.dll或.ocx组件
- 桶大娄子
- 硬盘的主从盘跳线设置教程
- 屏蔽浏览器关闭按钮及ALT+F4 快捷键
- ms sql 分页
- WinCE中中断的处理过程(驱动开发人员角度)
- OLE DB备考