解析XML文件时的编码问题

问题描述:

everyone。我正在使用Mono 2.4,Ubuntu 10.10开发一个小型的ASP.NET Mvc项目。有一个对象数组,每个对象都对应一个特定的xml文件。用XmlTextReader读取xmls。这不起作用,因为xml文件具有罕见的“cp866nav”编码,XmlTextReader不支持(“System.ArgumentException: Encoding name 'cp866nav' not supported”)。但是,如果在xml头中编码更改为“cp866”,它会正常工作。我找到了一种解决方案,它包括用一个StreamReader初始化的XmlTextReader具有一定的编码,而不是文件名,如下面的代码:解析XML文件时的编码问题

XmlTextReader reader = new XmlTextReader(new StreamReader(Server.MapPath(filename), Encoding.GetEncoding("cp866"))); 

的是,它包含XML文件的目录是只读的问题(我不能改变它),所以我得到 “System.UnauthorizedAccessException: Access to the path '' is denied.”。很奇怪,因为用文件名初始化的XmlTextReader似乎读取文件。

考虑到程序无法修改或创建文件,是否有解决方案?

由于你的问题是与文件访问而不是编码,我建议尝试打开文件作为流yourslef与正确的标志FileStream(名称,FileMode.Open,FileAccess.Read),然后调用其他构造函数StreamReader,需要流。

(当你完成后,不要忘记处置流/读者)。