Сохранение символов юникода как «» в файл;C # - PullRequest
1 голос
/ 11 февраля 2011

У меня есть XML-файл (преобразованный из xfdl), который содержит что-то вроде:

<custom:popUp xfdl:compute="toggle(activated,'off','on') == '1' ? viewer.messageBox('o Once you click ..... page.&#xD;o When you use the &#x201C;Create &#x201D; function in.......Portal.','Information'):''">

Я загружаю его и сохраняю, используя ...

XmlDocument xmlOut = new XmlDocument(); //note: not read only
FileStream outfs = new FileStream(tempOutXmlFileName, FileMode.Open, FileAccess.Read,
                           FileShare.ReadWrite);
xmlOut.Load(outfs);
xmlOut.Save(tempOutXmlFileName);
outfs.Close();

Этот процесс преобразует некоторыеинструкций Unicode в реальные символы, которые полностью портят xml / xfdl, поскольку теперь есть кавычки, где не должно быть кавычек.

Кто-нибудь знает, как я могу сохранить файл со всеми прекрасными&#x201C; неповрежденных символов?

Спасибо.


Что ж, немного повозившись и убедившись, что преобразование xml-> xfdl работает лучше, я столкнулся с новой проблемой.

Решение, представленное ниже, похоже, работает, и весь синтаксический анализ xml является правильным, но программа для чтения файла xfdl, похоже, не нравится, когда я кодирую его с использованием UTF-8 и хочет, чтобы кодировка былаISO-8859-1.

Есть идеи?

Ответы [ 2 ]

1 голос
/ 11 февраля 2011

Использование StreamReader и StreamWriter должно помочь.Чтобы было понятно, вы пытаетесь читать и записывать в один и тот же файл?Я добавил несколько хороших операторов using.

        XmlDocument xmlOut = new XmlDocument(); 
        //note: not read only
        using (FileStream outfs = new FileStream(tempOutXmlFileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
        using (StreamReader reader = new StreamReader(outfs, Encoding.UTF8))
        {
            xmlOut.Load(reader);
        }

        using (StreamWriter writer = new StreamWriter(tempOutXmlFileName, false, Encoding.UTF8))
        {
            xmlOut.Save(writer);
        }

Я установил append в false в StreamWriter, похоже, имеет смысл.

0 голосов
/ 26 февраля 2011

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

...