您的位置:首页 > 编程语言 > C#

C# 中访问URL之乱码问题解决

2010-01-27 18:51 387 查看
今天在asp.net下实现一个发短信的功能时需要调用现有的一个URL,并从本地取参数添加到URL上,然后请求此URL。

但参数中含有汉字:

public bool SendMMSByHttp(string url)
{
try
{

HttpWebRequest req = (HttpWebRequest) HttpWebRequest.Create(UrlEncode(url));
HttpWebResponse res = (HttpWebResponse)req.GetResponse();
}
catch(Exception ex)
{

}

return true;
}


代码中的url参数中含有汉字,在没有使用UrlEncode()函数时直接请求,用户得到的是乱码。

问题的原因和编码没有多大关系。问题在于URL的格式:URL中一般使用小于128的ASCII字符,如果含有超过128的则需要在其前面加上%。

所以我们需要对url进行转换:

protected string UrlEncode(string url)
{
byte[] bs = Encoding.GetEncoding("GB2312").GetBytes(url);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < bs.Length; i++)
{
if (bs[i] < 128)
sb.Append((char)bs[i]);
else
{
sb.Append("%" + bs[i++].ToString("x").PadLeft(2, '0'));
sb.Append("%" + bs[i].ToString("x").PadLeft(2, '0'));
}
}
return sb.ToString();
}


使用此函数之后用户收到的就是正常的了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: