在线时间:8:00-16:00
132-9538-2358
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
今天在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(); }
使用此函数之后用户收到的就是正常的了。
评论
请发表评论