Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 解析XML文件时的编码问题_C#_Asp.net_Xml_Encoding_Mono - Fatal编程技术网

C# 解析XML文件时的编码问题

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”,它就可以正常工作。我发现了一种解决方案,它包括使用具有特定编码

各位。我正在Mono 2.4和Ubuntu 10.10中开发一个小型ASP.NET Mvc项目。有一个对象数组,每个对象对应一个特定的xml文件。xmls的读取是使用XmlTextReader执行的。这不起作用,因为xml文件具有罕见的“cp866nav”编码,XmlTextReader不支持这种编码(“
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

(完成后不要忘记处理流/读卡器)