2023年6月21日发(作者:)

(转)浏览器发送URL的编码特性

尽管有很多规范URL的标准,例如RFC 3987,但实际应用中却非常混乱。本文主要介绍浏览器发送URL到服务器的一些特性,作为开发和应用的参考。

通常浏览器会用两种编码方式发送URL到服务器,分别是UTF-8和ANSI(当前系统语言设置,在Windows系统中可以理解为当前代码页)。接下来分别介绍几种常用浏览器发送URL的编码特性。

一、直接在地址栏输入URL的情况

中文Windows环境下,假如直接在浏览器的地址栏输入URL:/中国.html?kw=中国

1. IE浏览器特性

UTF-8模式(默认)

ANSI模式

PATH部分

%E4%B8%AD%E5%9B%

UTF-8编码、urlencode

中国.html

GBK编码、无urlencode

kw=中国

参数部分

GBK编码、无urlencode

kw=中国

GBK编码、无urlencode

2. 中文Windows环境下,IE中默认发送的URL的PATH部分是UTF-8编码,参数部分是GBK编码。IE的设置选项中有一项是“总是以 UTF-8 发送URL”可以改变发送URL的编码为ANSI。

3. FireFox浏览器特性

UTF-8模式

ANSI模式(默认)

PATH部分

%E4%B8%AD%E5%9B%

UTF-8编码、urlencode

%D6%D0%B9%

GBK编码、urlencode

参数部分

kw=%E4%B8%AD%E5%9B%BD

UTF-8编码、urlencode

kw=%D6%D0%B9%FA

GBK编码、urlencode

4. 中文Windows环境下FireFox中默认发送的URL的PATH和参数都是GBK编码,在FireFox地址栏输入“about:config”,找到选项“-utf8”,即可改变发送URL的编码方式。

5. Opera浏览器特性

UTF-8模式(默认)

PATH部分

%E4%B8%AD%E5%9B%

UTF-8编码、urlencode

参数部分

kw=%E4%B8%AD%E5%9B%BD

UTF-8编码、urlencode

二、来自网页中的链接

在不同的浏览器中打开不同编码的网页中的链接,特性也不相同。在不改变浏览器默认选项情况下访问不同编码的网页中以下链接:/中国.html?kw=中国

1. IE浏览器特性

UTF-8网页

GBK网页

PATH部分

%E4%B8%AD%E5%9B%

UTF-8编码、urlencode

%E4%B8%AD%E5%9B%

kw=中国

UTF-8编码、无urlencode

kw=中国

参数部分

2. FireFox浏览器特性

UTF-8网页

GBK网页

UTF-8编码、urlencode GBK编码、无urlencode

PATH部分

%E4%B8%AD%E5%9B%

UTF-8编码、urlencode

%D6%D0%B9%

GBK编码、urlencode

参数部分

kw=%E4%B8%AD%E5%9B%BD

UTF-8编码、urlencode

kw=%D6%D0%B9%FA

GBK编码、urlencode

如果改变IE默认选项为ANSI模式或者将FireFox改为UTF-8模式的访问结果可以自己测试。

几点说明:

1. 对于开发人员而言,一定要考虑到不同环境下URL编码的不同,才能实现系统更好的兼容性。兼容性好的系统必须要能够识别来自客户端URL的编码,才能正确处理。

例如在Opera浏览器地址栏直接输入“/s?wd=我们”,就会发现不能正确访问。

2. 不同的WEB服务器对各种编码的URL处理也不相同,尽量不要使用中文字符作文件名。

3. 如果写入网页中的链接包括中文字符,最好使用urlencode处理,才能和当前网页编码无关。否则有可能不能正确访问。

4. 很多情况下浏览器的地址栏看到URL并不等同于发送到服务器的URL。要正确查看浏览器发送的到服务器URL,最好借助一些工具分析HTTP的请求头。

原文链接:/sawfish/2007/04/01/%E6%B5%8F%E8%A7%88%E5%99%A8%E5%8F%91%E9%80%81url%E7%9A%84%E7%BC%96%E7%A0%81%E7%89%B9%E6%80%A7/

2023年6月21日发(作者:)

(转)浏览器发送URL的编码特性

尽管有很多规范URL的标准,例如RFC 3987,但实际应用中却非常混乱。本文主要介绍浏览器发送URL到服务器的一些特性,作为开发和应用的参考。

通常浏览器会用两种编码方式发送URL到服务器,分别是UTF-8和ANSI(当前系统语言设置,在Windows系统中可以理解为当前代码页)。接下来分别介绍几种常用浏览器发送URL的编码特性。

一、直接在地址栏输入URL的情况

中文Windows环境下,假如直接在浏览器的地址栏输入URL:/中国.html?kw=中国

1. IE浏览器特性

UTF-8模式(默认)

ANSI模式

PATH部分

%E4%B8%AD%E5%9B%

UTF-8编码、urlencode

中国.html

GBK编码、无urlencode

kw=中国

参数部分

GBK编码、无urlencode

kw=中国

GBK编码、无urlencode

2. 中文Windows环境下,IE中默认发送的URL的PATH部分是UTF-8编码,参数部分是GBK编码。IE的设置选项中有一项是“总是以 UTF-8 发送URL”可以改变发送URL的编码为ANSI。

3. FireFox浏览器特性

UTF-8模式

ANSI模式(默认)

PATH部分

%E4%B8%AD%E5%9B%

UTF-8编码、urlencode

%D6%D0%B9%

GBK编码、urlencode

参数部分

kw=%E4%B8%AD%E5%9B%BD

UTF-8编码、urlencode

kw=%D6%D0%B9%FA

GBK编码、urlencode

4. 中文Windows环境下FireFox中默认发送的URL的PATH和参数都是GBK编码,在FireFox地址栏输入“about:config”,找到选项“-utf8”,即可改变发送URL的编码方式。

5. Opera浏览器特性

UTF-8模式(默认)

PATH部分

%E4%B8%AD%E5%9B%

UTF-8编码、urlencode

参数部分

kw=%E4%B8%AD%E5%9B%BD

UTF-8编码、urlencode

二、来自网页中的链接

在不同的浏览器中打开不同编码的网页中的链接,特性也不相同。在不改变浏览器默认选项情况下访问不同编码的网页中以下链接:/中国.html?kw=中国

1. IE浏览器特性

UTF-8网页

GBK网页

PATH部分

%E4%B8%AD%E5%9B%

UTF-8编码、urlencode

%E4%B8%AD%E5%9B%

kw=中国

UTF-8编码、无urlencode

kw=中国

参数部分

2. FireFox浏览器特性

UTF-8网页

GBK网页

UTF-8编码、urlencode GBK编码、无urlencode

PATH部分

%E4%B8%AD%E5%9B%

UTF-8编码、urlencode

%D6%D0%B9%

GBK编码、urlencode

参数部分

kw=%E4%B8%AD%E5%9B%BD

UTF-8编码、urlencode

kw=%D6%D0%B9%FA

GBK编码、urlencode

如果改变IE默认选项为ANSI模式或者将FireFox改为UTF-8模式的访问结果可以自己测试。

几点说明:

1. 对于开发人员而言,一定要考虑到不同环境下URL编码的不同,才能实现系统更好的兼容性。兼容性好的系统必须要能够识别来自客户端URL的编码,才能正确处理。

例如在Opera浏览器地址栏直接输入“/s?wd=我们”,就会发现不能正确访问。

2. 不同的WEB服务器对各种编码的URL处理也不相同,尽量不要使用中文字符作文件名。

3. 如果写入网页中的链接包括中文字符,最好使用urlencode处理,才能和当前网页编码无关。否则有可能不能正确访问。

4. 很多情况下浏览器的地址栏看到URL并不等同于发送到服务器的URL。要正确查看浏览器发送的到服务器URL,最好借助一些工具分析HTTP的请求头。

原文链接:/sawfish/2007/04/01/%E6%B5%8F%E8%A7%88%E5%99%A8%E5%8F%91%E9%80%81url%E7%9A%84%E7%BC%96%E7%A0%81%E7%89%B9%E6%80%A7/