C# 中文URL編碼

來源:互聯網
上載者:User

正在研究一個程式,輸入一個關鍵字,能夠把這個關鍵字發送到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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.