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 的狀況下: