关于邮件发送时用streamreader读取文件作为body时编码问题
用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,但是不起作用