解析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,需要流。
(当你完成后,不要忘记处置流/读者)。