加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

C# 中文URL编码转换

(2011-04-20 15:45:06)
标签:

杂谈

分类: C#.NET

 

在解析网页时遇到的问题,困扰啊

先给出错误的编码例子:

string url="http://hi.baidu.com/小鹿剑"

(错误) string str=HttpUtility.UrlEncode(url);

原因很简单,后面的汉字在c#开发环境下输入的是unicode码,url编码是针对asscii的,英文用上面的式子没有问题,含有中文时用上面的式子转换就会出错

正确的方法如下:

        static string ChEncodeUrl(string str)
        {
            byte[] byt = Encoding.Default.GetBytes(str);
            string ret = HttpUtility.UrlEncode(byt);
            return ret;
        }

 

总结: 
UTF-8中,一个汉字对应三个字节,GB2312中一个汉字占用两个字节。 
不论何种编码,字母数字都不编码,特殊符号编码后占用一个字节。

//按照UTF-8进行编码 
string tempSearchString1 = System.Web.HttpUtility.UrlEncode("C#中国"); 
//按照GB2312进行编码 
string tempSearchString2 = System.Web.HttpUtility.UrlEncode("C#中国",System.Text.Encoding.GetEncoding("GB2312"));



0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有