Проблема с кодировкой при разборе файла XML - PullRequest
1 голос
/ 12 декабря 2010

все. Я разрабатываю небольшой проект ASP.NET Mvc в Mono 2.4, Ubuntu 10.10. Существует массив объектов, каждый из которых соответствует определенному XML-файлу. Чтение xmls выполняется с помощью XmlTextReader. Это не работает, потому что XML-файлы имеют редкую кодировку "cp866nav", которая не поддерживается XmlTextReader ("System.ArgumentException: Encoding name 'cp866nav' not supported"). Но это работает нормально, если кодировка в заголовке xml изменена на "cp866". Я нашел решение, которое заключается в инициализации XmlTextReader с StreamReader с определенной кодировкой вместо имени файла, как в коде ниже:

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

Проблема в том, что каталог, содержащий файлы XML, доступен только для чтения (я не могу его изменить), поэтому я получаю "System.UnauthorizedAccessException: Access to the path '' is denied.". Довольно странно, потому что XmlTextReader, инициализированный с именем файла, похоже, читает файлы.

Есть ли какое-либо решение, учитывая, что программа не может изменять или создавать файлы?

1 Ответ

0 голосов
/ 12 декабря 2010

Поскольку ваша проблема связана с доступом к файлу, а не с кодировкой, я бы рекомендовал попытаться открыть файл как поток yourslef с правильными флагами FileStream (name, FileMode.Open, FileAccess.Read), а затем вызвать другой конструктор StreamReader, который принимает Stream.

(Не забудьте утилизировать поток / читателей, когда закончите).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...