CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

老话重提.怎么简单的转换字符串编码?或者获取网页的时候自动判断编码?

楼主boyyao(迷失在网络 (问题不解答扣分也不结贴!))2006-03-20 15:39:27 在 .NET技术 / C# 提问

为了能稍微通用.我获取网页的时候想用  
  StreamReader   strResponse   =   new   StreamReader(Response.GetResponseStream(),   Encoding.ASCII);  
   
  然后获取回来的内容在更具网页中的charset判断编码格式.我应该怎么操作?  
   
  比如获取的网页编码是gb2312的.应该如何转换ascii到   gb2312?  
  问题点数:20、回复次数:7Top

1 楼boyyao(迷失在网络 (问题不解答扣分也不结贴!))回复于 2006-03-20 15:44:05 得分 0

我发现如果用Encoding.ascii获取的网页所有中文都成?????了.  
  可能已经丢失了中文信息了.  
  我用utf8抓回来可以么?抓回来是一堆乱码.这些乱码还能转换到gb2312么?如果不指定编码默认的好像就是utf8的.或者我应该怎么做?  
  Top

2 楼boyyao(迷失在网络 (问题不解答扣分也不结贴!))回复于 2006-03-20 15:59:12 得分 0

我现在用的.  
                                  StreamReader   strResponse   =   new   StreamReader(Response.GetResponseStream(),   enc);   //enc是GB2312的编码  
                                  string   str   =   strResponse.ReadToEnd();  
                                  Response.Close();  
                                  strResponse.Close();  
                                  Regex   regEncoding   =   new   Regex(@"charset=([\w-]*)\.*");  
   
                                  Match   m   =   regEncoding.Match(str);  
                                  if   (m.Success)  
                                  {  
                                          Encoding   getenc   =   Encoding.GetEncoding(m.Groups[1].ToString());  
                                          byte[]   gbytes   =   enc.GetBytes(str);  
                                          return   getenc.GetString(gbytes);  
                                    }  
   
  对gb2312的页面正常.可是对utf8的页面有些中文地方会少最后一个字符Top

3 楼boyyao(迷失在网络 (问题不解答扣分也不结贴!))回复于 2006-03-21 21:39:00 得分 0

UPUPTop

4 楼sswater(光杆兵)回复于 2006-03-22 16:23:47 得分 0

搂主的理解马上就要理解透彻了。  
   
  1.   首先使用   ASCII   进行读取,能够得知编码,其他部分读入的内容是不对的,但不会丢失信息。  
  2.   将字符串   getBytes   恢复成   "字节串",再用刚才得知的编码进行重新编码,得到正确的   "字符串"  
  3.   推荐搂主参考文章,理解其中的概念:  
  http://www.regexlab.com/zh/encoding.htm  
  Top

5 楼boyyao(迷失在网络 (问题不解答扣分也不结贴!))回复于 2006-03-25 22:56:09 得分 0

upupupTop

6 楼boyyao(迷失在网络 (问题不解答扣分也不结贴!))回复于 2006-03-26 16:31:14 得分 0

upupTop

7 楼net_lover(【孟子E章】)回复于 2006-03-26 16:35:20 得分 0

http://community.csdn.net/Expert/TopicView.asp?id=4633372Top

相关问题

  • 字符串编码〉???请教
  • 字符串编码问题
  • 字符串编码的转换问题???
  • 字符串编码的转换问题???
  • vb字符串编码问题
  • 怎样将base16编码的字符串转化为base64编码的字符串?
  • 怎么把字符串转换成16进制编码形式的字符串??
  • 普通ASCII字符串,如何转化为 UTF_8编码的字符串?
  • 怎么将Unicode编码的字符串转变成DbCS编码?
  • 如何对字符串进行MD5编码和BASE64编码?

关键词

  • 编码
  • 网页
  • 转换
  • 字符串
  • 获取
  • strresponse
  • streamreader
  • gb2312
  • enc
  • 回来

得分解答快速导航

  • 帖主:boyyao

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo