正在研究一個程式,輸入一個關鍵字,能夠把這個關鍵字發送到Google,yahoo等搜尋引擎,進行搜尋,然後開啟結果網頁。原理很簡單。比如在
Google搜尋China,搜尋結果頁面的URL就是“http://www.google.com/search?hl=zh-CN&
q=China&lr=”。只要替換紅顏色的內容,就可以按照不同的關鍵字搜尋。
但是如果關鍵字是中文,就會出現問題。比如在google搜尋“中國”,Url是“http://www.google.com
/search?hl=zh-CN&newwindow=1&q=%E4%B8%AD%E5%9B%BD&lr=”。漢字“中
國”被按照UTF-8的格式進行編碼。
不僅漢字進行編碼,一些特殊字元也會進行編碼。比如搜尋“C#”,URL是“http://www.google.com/search?hl=zh-CN&newwindow=1&q=C%23&lr=”。
一般來說,國外的網站都是按照UTF-8編碼,而“百度”是按照“GB2312”進行編碼的。比如搜尋“中國”,URL是“http://www.baidu.com/s?wd=%D6%D0%B9%FA&cl=3”
我們對比一下:C#中國的編碼
編碼 結果 網站
UTF-8 C%23%E4%B8%AD%E5%9B%BD Google
GB2312 C%23%D6%D0%B9%FA BaiDu
總結:
UTF-8中,一個漢字對應三個位元組,GB2312中一個漢字佔用兩個位元組。
不論何種編碼,字母數字都不編碼,特殊符號編碼後佔用一個位元組。
//按照UTF-8進行編碼
string tempSearchString1 = System.Web.HttpUtility.UrlEncode("C#中國");
//按照GB2312進行編碼
string tempSearchString2 = System.Web.HttpUtility.UrlEncode("C#中國",System.Text.Encoding.GetEncoding("GB2312"));
//--------------------------------------------------------------------------------------------------------------
【轉】ASP.NET中c#的URL編碼處理
要解決的問題:
將下面的URL作為一個參數傳到其他的頁面
1 http://domain/de.apx?uid=12&page=15
2 url後面的參數中出現漢字等,如: ....aspx?title=起重機
在出現上面的情況的時候,必須經過一個RUL編碼和解碼的過程,否則會出現錯誤.
代碼如下:
//傳值
string temp = " <a href='Add.aspx?url=" +Server.UrlEncode(
skin.Page.Request.Url.AbsoluteUri )+ "&title=" +Server.UrlEncode(
skin.Page.Header.Title )+ "'>添加到收藏夾</a>");
//在另外一個檔案中取從上面傳的值
if (Request.QueryString["url"] != null)
{
string url = Server.UrlDecode(Request.QueryString["url"].ToString());
this.txtAddress.Text = url;
}
if (Request.QueryString["title"] != null)
{
string title = Server.UrlDecode(Request.QueryString["title"].ToString());
this.txtTitle.Text = title;
}
//-----------------------------------------------
URL編碼對照表
1、string s = System.Web.HttpUtility(byte[] data);
這裡的s即為轉換出來的URL編碼,需要注意的是這裡的byte數組必須是具有ASCII意義的數組,由string通過System.Text.Encoding.Default.getBytes(str.ToCharArray());是不正確的,不能正確轉義!
2、根據URL編碼規則寫個小程式
******* string UrlEncode(byte[] byt)
{
string desstr = "";
for(int i=0; i<byt.Length;i++)
{
desstr += "%";
desstr += byt[i].ToString("X2");
}
return desstr;
}
以下是URL編碼對照表:
backspace %08
tab %09
linefeed %0A
creturn %0D
space %20
! %21
" %22
# %23
$ %24
% %25
& %26
' %27
( %28
) %29
* %2A
+ %2B
, %2C
- %2D
. %2E
/ %2F
0 %30
1 %31
2 %32
3 %33
4 %34
5 %35
6 %36
7 %37
8 %38
9 %39
: %3A
; %3B
< %3C
= %3D
> %3E
? %3F
@ %40
A %41
B %42
C %43
D %44
E %45
F %46
G %47
H %48
I %49
J %4A
K %4B
L %4C
M %4D
N %4E
O %4F
P %50
Q %51
R %52
S %53
T %54
U %55
V %56
W %57
X %58
Y %59
Z %5A
[ %5B
\ %5C
] %5D
^ %5E
_ %5F
` %60
a %61
b %62
c %63
d %64
e %65
f %66
g %67
h %68
i %69
j %6A
k %6B
l %6C
m %6D
n %6E
o %6F
p %70
q %71
r %72
s %73
t %74
u %75
v %76
w %77
x %78
y %79
z %7A
{ %7B
| %7C
} %7D
~ %7E
¢ %A2
£ %A3
¥ %A5
| %A6
§ %A7
? %AB
? %AC
ˉ %AD
o %B0
± %B1
a %B2
, %B4
μ %B5
? %BB
? %BC
? %BD
? %BF
A` %C0
A′ %C1
A^ %C2
A~ %C3
A¨ %C4
A° %C5
? %C6
C? %C7
E` %C8
E′ %C9
E^ %CA
E¨ %CB
I` %CC
I′ %CD
I^ %CE
I¨ %CF
D %D0
N~ %D1
O` %D2
O′ %D3
O^ %D4
O~ %D5
O¨ %D6
? %D8
U` %D9
U′ %DA
U^ %DB
U¨ %DC
Y′ %DD
T %DE
? %DF
a` %E0
a′ %E1
a^ %E2
a~ %E3
a¨ %E4
a° %E5
? %E6
c? %E7
e` %E8
e′ %E9
e^ %EA
e¨ %EB
i` %EC
i′ %ED
i^ %EE
i¨ %EF
e %F0
n~ %F1
o` %F2
o′ %F3
o^ %F4
o~ %F5
o¨ %F6
÷ %F7
? %F8
u` %F9
u′ %FA
u^ %FB
u¨ %FC
y′ %FD
t %FE
y¨ %FF