主题:  StreamReader读写问题

蓝鲸

职务:版主
等级:5
金币:42.1
发贴:2614
#12004/12/3 2:36:53
最近想写个程序,从网上读取XML文件,用到WebClient类。从网上读取只能用Steam流读取,所以用StreamReader作为读取工具:

WebClient myWeb = new WebClient();
Stream myStream = myWeb.OpenReader("http://www.hellosea.com/xml/001.xml");
StreamReader reader = new StreamReader(myStream);

StringBuilder sb = new StringBuilder();
string line;

do
{
    line = reader.ReadeLine();
    sb.Append(line);
}while(line != null)

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(sb.ToString());
xmlDoc.Save(Application.StartupPath + "\\sample.xml");

但读取的中文都是乱码。虽然可以用
StreamReader reader = new StreamReader(myStream, Encoding.GetEncoding("gb2312"));
来控制,甚至可以读取xml中Encoding中的编码或Language。
但很邪门,我测试了一中文网,并去掉了encoding属性,并修改language为"zh-tw",但安装的一阅读器还是能正确读出来。

我想不到用什么办法了,比如可能这页面是日本的,它什么语言信息都没有,或者是错误的,怎么读出来。另外想到变能的办法,就是把文件下载到硬盘再读就可以了。但不知道用流的方式怎么做好些?


非常大鱼

蓝鲸

职务:版主
等级:5
金币:42.1
发贴:2614
#22004/12/3 2:56:36
啊,笨死了,我刚发好帖,就脑袋转弯了,看来脑子钻在这StreamReader上了,其实很容易

Xml.Load(myStream);
就行了,根本不用什么编码了。
看来我化了四五小时,专看编码文章都白看了。


非常大鱼