今天在做一个小程序发现C#的System.Web.HttpUtility.UrlEncode函数产生的编码和我们正常使用的有出入,如:
用System.Web.HttpUtility.UrlEncode产生的编码如下
南京:%e5%8d%97%e4%ba%ac
而正常的我们期待的结果是:%C4%CF%BE%A9
比较后发现两者前者认为一个汉字3个字节,而后者则是两个字节,这下恍然大悟原来在C#中如果直接用System.Web.HttpUtility.UrlEncode("南京")则程序用UTF-8编码处理汉字。
解决方法:
System.Web.HttpUtility.UrlEncode("南京",Encoding.GetEncoding("GB2312"))
加一个参数即可!