不一樣瀏覽器中URL的編碼方式

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 的狀況下: 
這裏寫圖片描述

相關文章
相關標籤/搜索