关于邮件发送时用streamreader读取文件作为body时编码问题

LoveDana 2003-02-26 11:10:22
用asp.net发送邮件的程序

出现的问题是:当我把网上某个webPage通过邮件发送时,出现encoding问题

如果我想把用asp或者纯html的页面通过这个程序发出去,encoding必须选作gb2312

如果我想把用asp.net做的页面发出去,就要选UTF8

但是,对于网上的任意一个webPage,我怎么知道用什么encoding?

WebClient myWebClient = new WebClient();
Stream myDataBuffer = myWebClient.OpenRead ("http://localhost/aspnetforums/smtpmailcs.aspx");
StreamReader sr = new StreamReader(myDataBuffer,true); //这里有问题
string download = sr.ReadToEnd();

其中:
StreamReader sr = new StreamReader(myDataBuffer,true);
这一句涉及encoding,默认是UTF8,这里的true,意思是,自动根据来源的编码进行decoding

而:
StreamReader sr = new StreamReader(myDataBuffer,Encoding.Default);
就是用本机系统的encoding,也就是GB2312

用Default,老网页不是乱码
用UTF8,新网页不是乱码

StreamReader sr = new StreamReader(myDataBuffer,true);
string ss = sr.CurrentEncoding.EncodingName;

这样,第二个句子的输出是 UTF8

这个功能如果只是用在自己的网站,就没问题。比如,在页面上有一个链接,允许浏览者把本页发给别人

但是,如果我们写了一个Windows应用,而不是web应用,要用这个方法获取网上任意的网页,我们怎么知道对方是什么编码方式?

StreamReader sr = new StreamReader(myDataBuffer,true);

按说,这个true参数就是要求采用source的encoding,但是不起作用
...全文
49 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
poney 2003-02-27
  • 打赏
  • 举报
回复
网页代码中一般都有这么一句:charset=gb2312(也可能是其他编码),如果是xml就会有encoding="Shift-JIS"(或者其他编码)。
不知这样能不能帮助你解决问题?
chinarengzy2 2003-02-27
  • 打赏
  • 举报
回复
在程序中判断一下不就行了。

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧