正在研究一个程序,输入一个关键字,能够把这个关键字发送到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