C# 中访问URL之乱码问题解决
2010-01-27 18:51
387 查看
今天在asp.net下实现一个发短信的功能时需要调用现有的一个URL,并从本地取参数添加到URL上,然后请求此URL。
但参数中含有汉字:
代码中的url参数中含有汉字,在没有使用UrlEncode()函数时直接请求,用户得到的是乱码。
问题的原因和编码没有多大关系。问题在于URL的格式:URL中一般使用小于128的ASCII字符,如果含有超过128的则需要在其前面加上%。
所以我们需要对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(); }
使用此函数之后用户收到的就是正常的了。
相关文章推荐
- C# 中访问URL之乱码问题解决
- C#访问数据库时中文乱码问题分析及解决
- C# asp.net页面通过URL参数传值中文乱码问题解决办法
- C# asp.net页面通过URL参数传值中文乱码问题解决办法
- C# asp.net页面通过URL参数传值中文乱码问题解决办法
- C# asp.net页面通过URL参数传值中文乱码问题解决办法
- C# asp.net页面通过URL参数传值中文乱码问题解决办法
- C# asp.net页面通过URL参数传值中文乱码问题解决办法
- C#/.Net通过Npgsql 访问PostgreSQL 乱码问题解决
- C#访问MySQL数据库时中文乱码问题分析及解决
- c#读写ANSI格式文件,解决中乱码问题最简单的写法
- C# URL乱码问题
- 解决get方法传递URL参数中文乱码问题
- 前台页面使用utf-8编码,url中包含中文参数时后台获取参数乱码问题解决
- 解决URL中参数乱码问题
- c#远程获取网页内容及乱码问题的解决办法 .
- 解决get方法传递URL参数中文乱码问题
- js、URL传递含有中文参数时的乱码问题解决
- 解决WordPress设置错误的url网站不能访问的问题
- 解决java中url传参中文乱码问题