浏览器发送URL的编码特性
作者:charset 来源:charset.cn 发布时间:2007-10-12 20:51:00
尽管有很多规范URL的标准,例如RFC 3987,但实际应用中却非常混乱。本文主要介绍浏览器发送URL到服务器的一些特性,作为开发和应用的参考。
通常浏览器会用两种编码方式发送URL到服务器,分别是UTF-8和ANSI(当前系统语言设置,在Windows系统中可以理解为当前代码页)。接下来分别介绍几种常用浏览器发送URL的编码特性。
一、直接在地址栏输入URL的情况
中文Windows环境下,假如直接在浏览器的地址栏输入URL:
http://www.charset.cn/中国.html?kw=中国
IE浏览器特性
PATH部分 参数部分 UTF-8模式(默认) %E4%B8%AD%E5%9B%BD.html kw=中国 UTF-8编码、urlencode GBK编码、无urlencode ANSI模式 中国.html kw=中国 GBK编码、无urlencode GBK编码、无urlencode 中文Windows环境下,IE中默认发送的URL的PATH部分是UTF-8编码,参数部分是GBK编码。IE的设置选项中有一项是“总是以 UTF-8 发送URL”可以改变发送URL的编码为ANSI。
FireFox浏览器特性
PATH部分 参数部分 UTF-8模式 %E4%B8%AD%E5%9B%BD.html kw=%E4%B8%AD%E5%9B%BD UTF-8编码、urlencode UTF-8编码、urlencode ANSI模式(默认) %D6%D0%B9%FA.html kw=%D6%D0%B9%FA GBK编码、urlencode GBK编码、urlencode 中文Windows环境下FireFox中默认发送的URL的PATH和参数都是GBK编码,在FireFox地址栏输入“about:config”,找到选项“network.standard-url.encode-utf8”,即可改变发送URL的编码方式。
Opera浏览器特性
PATH部分 参数部分 UTF-8模式(默认) %E4%B8%AD%E5%9B%BD.html kw=%E4%B8%AD%E5%9B%BD UTF-8编码、urlencode UTF-8编码、urlencode
二、来自网页中的链接
在不同的浏览器中打开不同编码的网页中的链接,特性也不相同。在不改变浏览器默认选项情况下访问不同编码的网页中以下链接:
http://www.charset.cn/中国.html?kw=中国
IE浏览器特性
PATH部分 参数部分 UTF-8网页 %E4%B8%AD%E5%9B%BD.html kw=中国 UTF-8编码、urlencode UTF-8编码、无urlencode GBK网页 %E4%B8%AD%E5%9B%BD.html kw=中国 UTF-8编码、urlencode GBK编码、无urlencode FireFox浏览器特性
PATH部分 参数部分 UTF-8网页 %E4%B8%AD%E5%9B%BD.html kw=%E4%B8%AD%E5%9B%BD UTF-8编码、urlencode UTF-8编码、urlencode GBK网页 %D6%D0%B9%FA.html kw=%D6%D0%B9%FA GBK编码、urlencode GBK编码、urlencode
如果改变IE默认选项为ANSI模式或者将FireFox改为UTF-8模式的访问结果可以自己测试。
几点说明:
对于开发人员而言,一定要考虑到不同环境下URL编码的不同,才能实现系统更好的兼容性。兼容性好的系统必须要能够识别来自客户端URL的编码,才能正确处理。
例如在Opera浏览器地址栏直接输入“http://www.baidu.com/s?wd=我们”,就会发现不能正确访问。不同的WEB服务器对各种编码的URL处理也不相同,尽量不要使用中文字符作文件名。
如果写入网页中的链接包括中文字符,最好使用urlencode处理,才能和当前网页编码无关。否则有可能不能正确访问。
很多情况下浏览器的地址栏看到URL并不等同于发送到服务器的URL。要正确查看浏览器发送的到服务器URL,最好借助一些工具分析HTTP的请求头。


猜你喜欢
- 这段时间服务器崩溃2次,一直没有找到原因,今天看到论坛发出的错误信息邮件,想起可能是MySQL的默认连接数引起的问题,一查果然,老天,默认
- 这些天,我需要全文搜索。这个区块中最酷的孩子们是Elastic Search和Sorl:他们快速,灵活,资源消耗沉重并且需要Java,这几乎
- 一、mongodb安装在官网下载适应于自己平台的mongodb,在此安装环境为Windows7-64bit下载完成后直接安装,连续点击nex
- 方法一: select `name` from mysql.proc where db = 'your_db_name' a
- 本文实例为大家分享了微信小程序实现简单倒计时的具体代码,供大家参考,具体内容如下任务描述:计时器任务要求:案例描述:设计一个实现倒计时功能的
- 那天偶尔看到看到一个小问题:两个不等长列表a=[1,2,3],b=[4,5,6,7],求它们对应元素的乘积的和。我一开始想到的方法就是选择更
- 【一:下载·安装】1.下载node.js下载地址:Node.js 或者 点击这里下载2.安装2.1选择No
- 前言个人一直觉得对学习任何知识而言,概念是相当重要的。掌握了概念和原理,细节可以留给实践去推敲。掌握的关键在于理解,通过具体的实例和实际操作
- 一、简介shutil是 python 中的高级文件操作模块,与os模块形成互补的关系,os主要提供了文件或文件夹的新建、删除、查看等方法,还
- 一、数据合并与分割1.tf.concat()填入两个tensor, 指定某维度,在指定的维度合并。除了合并的维度之外,其他的维度必须相等。2
- 一、案例场景字段login_place,一共267725行记录,随机15条记录如下: 后续数据分析工作需要用到地理维度进行分析,所以需要把
- 我有一张这样的产品零件表:部分part_id part_type product_id-------------
- python 中的视频处理模块,有一个叫做 moviepy,今天我们就来唠唠它。模块安装使用如下命令即可pip install moviep
- 这篇文章主要介绍了django自定义模板标签过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友
- 为了找到matplotlib在两个点之间连线的方法真是费了好大功夫,本文主要介绍了 matplotlib绘制两点间连线的几种方法,
- 所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。我们永远不
- 之前一直对于python类的继承机制认知的比较混乱,今天学习记录一下。(1)首先使用直接继承的方式class parent():  
- 具体用到了matplotlib.backends.backend_qt5agg.FigureCanvasQTAgg直接上代码(这里给出的只是
- 在上一个文章里写了关于左(右)侧定宽右(左)侧自动缩放的两列浮动,这个文章就要说一下三列浮动的问题了。在之前说过,两列浮动是其他多列浮动的基
- 前言在使用keras时候报错Keyerror ‘acc',这是一个keras版本问题,acc和accuracy本意是一样的,但是不同