**自:
儘管有很多規範url的標準,例如rfc 3987,但實際應用中卻非常混亂。本文主要介紹瀏覽器傳送url到伺服器的一些特性,作為開發和應用的參考。
通常瀏覽器會用兩種編碼方式傳送url到伺服器,分別是utf-8和ansi(當前系統語言設定,在windows系統中可以理解為當前**頁)。接下來分別介紹幾種常用瀏覽器傳送url的編碼特性。
中文windows環境下,假如直接在瀏覽器的位址列輸入url:
中國.html?kw=中國
1、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。
2、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的編碼方式。
3、opera瀏覽器特性
path部分
引數部分
utf-8模式(預設)
%e4%b8%ad%e5%9b%bd.html
kw=%e4%b8%ad%e5%9b%bd
utf-8編碼、urlencode
utf-8編碼、urlencode
在位址列的url編碼中,空格被編碼為%20,+號不變。
中國.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模式的訪問結果可以自己測試。
ajax的get請求在ie下不管頁面是什麼編碼,傳送的都是gbk編碼(本地編碼,無urlencode)。 在firefox中傳送的情況,按照頁面編碼進行傳送,並且有urlencode。
表單get請求,按照頁面編碼,urlencode
在表單的get請求url編碼中,空格被編碼為+,+號編碼為%2b
對於開發人員而言,一定要考慮到不同環境下url編碼的不同,才能實現系統更好的相容性。相容性好的系統必須要能夠識別來自客戶端url的編碼,才能正確處理。 例如在opera瀏覽器位址列直接輸入「我們」,就會發現不能正確訪問。
不同的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路徑下需要的一些引數,因此中文部分以及一些特殊字元需要...