首页 新闻 会员 周边

请问一个汉字乱码问题

0
悬赏园豆:20 [已关闭问题] 关闭于 2012-09-01 13:36

我用c#获取读取网页(head里写的编码方式是gbk)上的一段汉字,读取后发现字符串为乱码。用来如下办法未能解决:

        public string ConvertEncdoing(string source)
        {
            byte[] bytes = Encoding.GetEncoding("GBK").GetBytes(source);
            byte[] gbkBytes = Encoding.Convert(Encoding.GetEncoding("GBK"), Encoding.Unicode, bytes);
            return Encoding.Unicode.GetString(bytes);
        }

 

是不是不是这么转的?求教。

会长的主页 会长 | 专家六级 | 园豆:12401
提问于:2012-08-31 00:02
< >
分享
所有回答(1)
0

用这个http://htmlagilitypack.codeplex.com/ 啥问题都处理了

2012 | 园豆:21228 (高人七级) | 2012-08-31 08:47

我好想也是用的这个。和用什么类库抓取网页没关系,是网页中的汉字的编码显示为乱码。因为网页的的编码是gbk。c#里字符串编码是unicode。所在c#中的读取到的汉字显示为乱码了

支持(0) 反对(0) 会长 | 园豆:12401 (专家六级) | 2012-08-31 09:06

@会长: 

byte[] bytes = Encoding.GetEncoding("GBK").GetBytes(source); 这句好像不对吧,应是你当前的串的实际编码,一般为unicode或utf-8
支持(0) 反对(0) 2012 | 园豆:21228 (高人七级) | 2012-08-31 16:13

@2012: 修改为:

        public string ConvertEncdoing(string source)
        {
            byte[] bytes = Encoding.Default.GetBytes(source);
            byte[] gbkBytes = Encoding.Convert(Encoding.Default, Encoding.GetEncoding("GB2312"),bytes);
            return Encoding.GetEncoding("GB2312").GetString(bytes);
        }

还是不管用

支持(0) 反对(0) 会长 | 园豆:12401 (专家六级) | 2012-09-01 12:59
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册