瀏覽器傳送URL的編碼特性

2021-05-23 12:57:45 字數 2304 閱讀 7062

儘管有很多規範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路徑下需要的一些引數,因此中文部分以及一些特殊字元需要...