浏览器发送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=中国

  1. IE浏览器特性


    PATH部分参数部分
    UTF-8模式(默认)%E4%B8%AD%E5%9B%BD.htmlkw=中国
     UTF-8编码、urlencodeGBK编码、无urlencode
    ANSI模式中国.htmlkw=中国
     GBK编码、无urlencodeGBK编码、无urlencode

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

  2. FireFox浏览器特性


    PATH部分参数部分
    UTF-8模式%E4%B8%AD%E5%9B%BD.htmlkw=%E4%B8%AD%E5%9B%BD
     UTF-8编码、urlencodeUTF-8编码、urlencode
    ANSI模式(默认)%D6%D0%B9%FA.htmlkw=%D6%D0%B9%FA
     GBK编码、urlencodeGBK编码、urlencode

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

  3. Opera浏览器特性


    PATH部分参数部分
    UTF-8模式(默认)%E4%B8%AD%E5%9B%BD.htmlkw=%E4%B8%AD%E5%9B%BD
     UTF-8编码、urlencodeUTF-8编码、urlencode

二、来自网页中的链接

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

http://www.charset.cn/中国.html?kw=中国

  1. IE浏览器特性


    PATH部分参数部分
    UTF-8网页%E4%B8%AD%E5%9B%BD.htmlkw=中国
     UTF-8编码、urlencodeUTF-8编码、无urlencode
    GBK网页%E4%B8%AD%E5%9B%BD.htmlkw=中国
     UTF-8编码、urlencodeGBK编码、无urlencode
  2. FireFox浏览器特性


    PATH部分参数部分
    UTF-8网页%E4%B8%AD%E5%9B%BD.htmlkw=%E4%B8%AD%E5%9B%BD
     UTF-8编码、urlencodeUTF-8编码、urlencode
    GBK网页%D6%D0%B9%FA.htmlkw=%D6%D0%B9%FA
     GBK编码、urlencodeGBK编码、urlencode

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

几点说明:

  1. 对于开发人员而言,一定要考虑到不同环境下URL编码的不同,才能实现系统更好的兼容性。兼容性好的系统必须要能够识别来自客户端URL的编码,才能正确处理。
    例如在Opera浏览器地址栏直接输入“http://www.baidu.com/s?wd=我们”,就会发现不能正确访问。

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

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

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

标签:url,浏览器,编码
0
投稿

猜你喜欢

  • Python集合set()使用的方法详解

    2022-11-16 21:43:03
  • pandas使用函数批量处理数据(map、apply、applymap)

    2023-03-07 11:12:09
  • JS+php后台实现文件上传功能详解

    2024-04-27 15:22:28
  • python读取csv文件示例(python操作csv)

    2023-02-28 23:12:02
  • Python获取脚本所在目录的正确方法

    2022-12-07 14:37:36
  • Python3之读取连接过的网络并定位的方法

    2022-02-20 00:36:43
  • JS中如何实现点击a标签返回页面顶部的问题

    2024-04-19 10:14:19
  • FrontPage2002简明教程八:站点的管理

    2008-09-17 11:36:00
  • 深入SQL Cursor基本用法的详细介绍

    2024-01-12 22:05:06
  • PHP错误提示的关闭方法详解

    2023-11-14 13:00:05
  • 如何在不同版本的SQL Server中存储数据

    2009-01-15 13:06:00
  • 浅析Python编写函数装饰器

    2023-06-07 12:20:05
  • 用javascript结合Cookies记录浏览历史

    2008-02-12 12:37:00
  • kNN算法python实现和简单数字识别的方法

    2023-09-05 21:44:36
  • 一步一步教你创建SQL 2005计划任务应用图解教程

    2024-01-18 10:34:30
  • keras分类模型中的输入数据与标签的维度实例

    2022-01-30 02:12:43
  • MySQL索引下推详细

    2024-01-18 10:01:07
  • linux centos7安装mysql8的教程

    2024-01-20 21:52:11
  • JavaScript实现简单图片轮播效果

    2024-04-22 13:02:05
  • 微信小程序实现星星评价效果

    2023-08-24 10:04:45
  • asp之家 网络编程 m.aspxhome.com