首页 > 代码库 > .NET C#中处理Url中文编码问题
.NET C#中处理Url中文编码问题
近些日子在做一个用C#访问webservise的程序,由于需要传递中文参数去请求网站,所以碰到了中文编码问题。我们知道像百度这种搜索引擎中,当用户输入中文关键字后,它会把中文转码,以确保在Url中不会出现编码问题。比如在搜索框中输入“博客园”三个字,会看到URl如下所示:http://www.baidu.com/s?wd=博客园&rsv_spt=1&issp=1&f=8&rsv_bp=0&rsv_idx=2&ie=utf-8&tn=99570746_hao_pg,但是当你把它复制下来后,会发现是这样的:http://www.baidu.com/s?wd=%E5%8D%9A%E5%AE%A2%E5%9B%AD&rsv_spt=1&issp=1&f=8&rsv_bp=0&rsv_idx=2&ie=utf-8&tn=99570746_hao_pg,其实他们代表的是用一样的意思,只是编码不同而已。我们在用Url传递中文参数是也要做相应的转码处理。
回到正题,.NET C#中如何对中文转码呢?以下是我解决问题的方法:
System.Web.HttpUtility.UrlEncode(string prams):
A.按照UTF-8进行编码 :
该方法括号里面就收一个字符串,比如你要转码的中文参数,返回string;
示例:string Url = "cityname = " + System.Web.HttpUtility.UrlEncode("成都")+"&key=1e2r3r4t5y";
B.还有一种是按照GB2312进行编码 :
string Url = System.Web.HttpUtility.UrlEncode("成都",System.Text.Encoding.GetEncoding("GB2312"));
具体使用哪种编码可根据服务器接受的编码设置,一般用第一种就行了。
.NET C#中处理Url中文编码问题