儘管有很多規範url的標準,例如rfc 3987,但實際應用中卻非常混亂。本文主要介紹瀏覽器傳送url到伺服器的一些特性,作為開發和應用的參考。
通常瀏覽器會用兩種編碼方式傳送url到伺服器,分別是utf-8和ansi(當前系統語言設定,在windows系統中可以理解為當前**頁)。接下來分別介紹幾種常用瀏覽器傳送url的編碼特性。
一、直接在位址列輸入url的情況
http://www.charset.cn/中國.html?kw=中國ie瀏覽器特性
path部分
引數部分
utf-8模式(預設)
%e4%b8%ad%e5%9b%bd.html
kw=中國
utf-8編碼、urlencode
gbk編碼、無urlencode
ansi模式
中國.html
kw=中國
gbk編碼、無urlencode
gbk編碼、無urlencode
中文windows環境下,ie中預設傳送的url的path部分是utf-8編碼,引數部分是gbk編碼。ie的設定選項中有一項是「總是以 utf-8 傳送url」可以改變傳送url的編碼為ansi。
firefox瀏覽器特性
path部分
引數部分
utf-8模式
%e4%b8%ad%e5%9b%bd.html
kw=%e4%b8%ad%e5%9b%bd
utf-8編碼、urlencode
utf-8編碼、urlencode
ansi模式(預設)
%d6%d0%b9%fa.html
kw=%d6%d0%b9%fa
gbk編碼、urlencode
gbk編碼、urlencode
中文windows環境下firefox中預設傳送的url的path和引數都是gbk編碼,在firefox位址列輸入「about:config」,找到選項「network.standard-url.encode-utf8」,即可改變傳送url的編碼方式。
opera瀏覽器特性
path部分
引數部分
utf-8模式(預設)
%e4%b8%ad%e5%9b%bd.html
kw=%e4%b8%ad%e5%9b%bd
utf-8編碼、urlencode
utf-8編碼、urlencode
二、來自網頁中的鏈結
http://www.charset.cn/中國.html?kw=中國ie瀏覽器特性
path部分
引數部分
utf-8網頁
%e4%b8%ad%e5%9b%bd.html
kw=中國
utf-8編碼、urlencode
utf-8編碼、無urlencode
gbk網頁
%e4%b8%ad%e5%9b%bd.html
kw=中國
utf-8編碼、urlencode
gbk編碼、無urlencode
firefox瀏覽器特性
path部分
引數部分
utf-8網頁
%e4%b8%ad%e5%9b%bd.html
kw=%e4%b8%ad%e5%9b%bd
utf-8編碼、urlencode
utf-8編碼、urlencode
gbk網頁
%d6%d0%b9%fa.html
kw=%d6%d0%b9%fa
gbk編碼、urlencode
gbk編碼、urlencode
如果改變ie預設選項為ansi模式或者將firefox改為utf-8模式的訪問結果可以自己測試。
幾點說明:
對於開發人員而言,一定要考慮到不同環境下url編碼的不同,才能實現系統更好的相容性。相容性好的系統必須要能夠識別來自客戶端url的編碼,才能正確處理。
例如在opera瀏覽器位址列直接輸入「http://www.baidu.com/s?wd=我們」,就會發現不能正確訪問。
不同的web伺服器對各種編碼的url處理也不相同,盡量不要使用中文字元作檔名。
如果寫入網頁中的鏈結包括中文字元,最好使用urlencode處理,才能和當前網頁編碼無關。否則有可能不能正確訪問。
很多情況下瀏覽器的位址列看到url並不等同於傳送到伺服器的url。要正確檢視瀏覽器傳送的到伺服器url,最好借助一些工具分析http的請求頭。
瀏覽器傳送URL的編碼特性
自 儘管有很多規範url的標準,例如rfc 3987,但實際應用中卻非常混亂。本文主要介紹瀏覽器傳送url到伺服器的一些特性,作為開發和應用的參考。通常瀏覽器會用兩種編碼方式傳送url到伺服器,分別是utf 8和ansi 當前系統語言設定,在windows系統中可以理解為當前 頁 接下來分別介紹幾種...
瀏覽器URL編碼
1 瀏覽器編碼 ie6.0及以前版本,通過在位址列裡輸入url時,使用的預設編碼是gbk ie7.0 ie8版本,通過在位址列裡輸入url時,使用的預設編碼是utf 8,也可以在工具 高階選項裡修改 2 中文引數編碼例項 string version request.getheader user a...
關於瀏覽器的url的編碼
url編碼 http 127.0.0.1 a uc瀏覽器 不編碼 此url的表示uri表示a目錄下的uc瀏覽器路徑,根據規範來說是表示路徑 http 127.0.0.1 a uc瀏覽器http 只是會編碼中文或者個特殊字元 此url的uri表示a路徑下需要的一些引數,因此中文部分以及一些特殊字元需要...