1、直接在地址栏中输入URL的状况
在中文Windows环境下,本地编码为GB2312:
假如在浏览器地址栏中直接输入如下URL:html
http://localhost:8080/servletTest/中国.do?name=中国
一、IE浏览器
版本:
默认状况下,老是以UTF-8发送URL:
这里要用到一个抓包工具Fiddler,安装后启动就行。java
打开IE,输入URL:
此时,Fiddler中会抓取到数据:
会发现,pathInfo中的“中国”两个字被编码为:%E4%B8%AD%E5%9B%BD。这个是UTF-8编码。而queryString中的‘中国’两个字是乱码:name=�й�。在Fiddler中切换到十六进制能够看到真实的编码:
这个十六进制编码D6 D0 B9 FA,就是‘中国’两个字的GB2312编码。浏览器
如今将默认修改成不以UTF-8发送:
再次在IE的地址栏中输入请求URL:
发现pathInfo部分的”中国”两个字的编码是%D6%D0%B9%FA。可是queryString部分依旧是乱码,按照十六进制查看,也是按照GB2312。ruby
小结:IE9 中的编码方式 工具
2、利用FireFox浏览器直接在地址栏输入URL进行访问
浏览器版本:
在默认的状况下,输入URL:post
http://localhost:8080/servletTest/中国.do?name=中国
发现URL中pathInfo和queryString中“中国”两个字的编码是:%E4%B8%AD%E5%9B%BD,这是UTF-8编码。编码
小结:火狐浏览器默认utf-8编码(浏览器版本可能会有差别) spa
三、Chrome浏览器直接访问URL
发现URL中pathInfo和queryString中“中国”两个字的编码是:%E4%B8%AD%E5%9B%BD,这是UTF-8编码。firefox
小结:Chrome浏览器默认utf-8编码(浏览器版本可能会有差别) 3d
2、根据页面的编码,各类浏览器的URL编码
一、使用Get请求,页面设置为:
<%@ page contentType="text/html;charset=GBK" language="java" %> <form action="中国.do?contry=中国" method="get" enctype="multipart/form-data"> <table> <tr> <td>姓名</td> <td><input name="name" type="text"></td> <td>年龄</td> <td><input name="age" type="text"></td> </tr> <tr><input type="submit" value="提交"></tr> </table>
1.1 firefox浏览器(默认设置)
输入如下内容,提交:
火狐浏览器在页面是GBK编码的状况下,采用GET提交,发现pathInfo部分是UTF-8编码,可是queryString是GBK编码(也就是页面数据部分)。
1.二、将页面编码修改成UTF-8:
<%@ page contentType="text/html;charset=UTF-8" %>
从新提交 GET请求:
火狐浏览器在页面是UTF-8编码的状况下,采用GET提交,发现pathInfo部分是UTF-8编码,可是queryString是UTF-8编码(也就是页面数据部分)。
1.三、用Chrome浏览器(默认)
Chrome浏览器在页面是GBK编码的状况下,发现pathInfo部分是UTF-8编码,可是queryString是GBK编码(也就是页面数据部分)。
1.四、采用Chrome浏览器采用PostT提交:
Chrome浏览器在页面是UTF-8编码的状况下,采用GET提交,发现pathInfo部分是UTF-8编码,可是queryString是UTF-8编码(也就是页面数据部分)。
小结:一、页面编码是GBK,提交是GET 的状况下:
二、页面编码是UTF-8,提交是GET的状况下:
二、采用Post提交,可是页面仍是设置GBK:
<%@ page contentType="text/html;charset=GBK" %> <form action="中国.do?contry=中国" method="post" enctype="multipart/form-data"> <table> <tr> <td>姓名</td> <td><input name="name" type="text"></td> <td>年龄</td> <td><input name="age" type="text"></td> </tr> <tr><input type="submit" value="提交"></tr> </table>
2.一、火狐浏览器
火狐浏览器在页面是GBK编码的状况下,采用POST提交,发现pathInfo部分是UTF-8编码,可是queryString是GBK编码(也就是页面数据部分)。
2.二、修改页面编码格式为UTF-8,:
火狐浏览器在页面是UTF-8编码的状况下,采用POST提交,发现pathInfo部分是UTF-8编码,可是queryString是UTF-8编码(也就是页面数据部分)。
2.三、Chrome浏览器
Chrome浏览器在页面是GBK编码的状况下,采用POST提交,发现pathInfo部分是UTF-8编码,可是queryString是GBK编码(也就是页面数据部分)。
2.四、页面也修改成UTF-8编码:
Chrome浏览器在页面是UTF-8编码的状况下,采用POST提交,发现pathInfo部分是UTF-8编码,可是queryString是UTF-8编码(也就是页面数据部分)。
小结:一、页面编码是GBK,提交是POST 的状况下:
二、页面编码是UTF-8,提交是POST 的状况下: