C# 解析XML文件时的编码问题
各位。我正在Mono 2.4和Ubuntu 10.10中开发一个小型ASP.NET Mvc项目。有一个对象数组,每个对象对应一个特定的xml文件。xmls的读取是使用XmlTextReader执行的。这不起作用,因为xml文件具有罕见的“cp866nav”编码,XmlTextReader不支持这种编码(“C# 解析XML文件时的编码问题,c#,asp.net,xml,encoding,mono,C#,Asp.net,Xml,Encoding,Mono,各位。我正在Mono 2.4和Ubuntu 10.10中开发一个小型ASP.NET Mvc项目。有一个对象数组,每个对象对应一个特定的xml文件。xmls的读取是使用XmlTextReader执行的。这不起作用,因为xml文件具有罕见的“cp866nav”编码,XmlTextReader不支持这种编码(“System.ArgumentException:不支持编码名称“cp866nav”)。但若将xml头中的编码更改为“cp866”,它就可以正常工作。我发现了一种解决方案,它包括使用具有特定编码
System.ArgumentException:不支持编码名称“cp866nav”)。但若将xml头中的编码更改为“cp866”,它就可以正常工作。我发现了一种解决方案,它包括使用具有特定编码而不是文件名的StreamReader初始化XmlTextReader,如下面的代码所示:
XmlTextReader reader = new XmlTextReader(new StreamReader(Server.MapPath(filename), Encoding.GetEncoding("cp866")));
问题是,包含xml文件的目录是只读的(我不能更改它),因此
“System.UnauthorizedAccessException:对路径“”的访问被拒绝。
”。很奇怪,因为用文件名初始化的XmlTextReader似乎在读取文件
考虑到程序无法修改或创建文件,有什么解决方案吗?因为您的问题是文件访问而不是编码,我建议尝试使用正确的标志FileStream(名称、FileMode.open、FileAccess.Read)以流形式打开文件,然后调用另一个采用流的构造函数StreamReader
(完成后不要忘记处理流/读卡器)