C # Filestream не может правильно прочитать слово html - PullRequest
0 голосов
/ 31 января 2012

Я пытаюсь опубликовать статьи, написанные в Word, на веб-сайте в формате html, у меня есть Windows-клиент, который преобразует статью в html и отправляет html в папку на веб-сайте, затем я показываю статью в IFrame. Однако в IE9 изображения не будут отображаться, потому что IE9 пытается преобразовать их в векторную графику. Я решил удалить код из HTML, который отвечает за это, и здесь начинается моя проблема. После того, как я изменяю и сохраняю файл, я получаю символы мусора, которые также отображаются на веб-странице. Однако если я вручную отредактирую файл в notepad ++, у меня не возникнут те же проблемы. Как я могу прочитать файл, сохраненный в формате Word, как HTML, используя C #, и не получить эти символы мусора ?? вот мой код

    private bool AdjustHtmlPageForIE9Images(FileInfo file)
    {
        bool success = true;
        try
        {
            string content = File.ReadAllText(file.FullName);
            //replace [if gte vml 1] with [if gte iesucksopd 1]
            content = content.Replace("[if gte vml 1]", "[if gte iesucksopd 1]");
            //replace [if !vml] with [if !iesucksopd]
            content = content.Replace("[if !vml]", "[if !iesucksopd]");
            //now write the file over
            File.WriteAllText(file.FullName, content);
        }
        catch (Exception ex)
        {

            throw ex;
        }
        return success;
    }

и это приводит к отображению некоторых символов мусора.

Привет, ребята, спасибо за все ответы, вот что я сделал, чтобы исправить это

Привет, ребята, спасибо за ответы, наконец, все получилось, мне пришлось открыть в FF и проверить кодировку, и это была Западная Windows-1252, затем, когда SLaks sed передал GetEncoding (1252) в операциях чтения и записи, вот пересмотренный вариант код.

    private bool AdjustHtmlPageForIE9Images(FileInfo file)
    {
        bool success = true;
        try
        {
            Encoding encoding = Encoding.GetEncoding(1252);
            string content = File.ReadAllText(file.FullName,encoding);
            //replace [if gte vml 1] with [if gte iesucksopd 1]
            content = content.Replace("[if gte vml 1]", "[if gte iesucksopd 1]");
            //replace [if !vml] with [if !iesucksopd]
            content = content.Replace("[if !vml]", "[if !iesucksopd]");
            //now write the file over
            File.WriteAllText(file.FullName, content, encoding);
        }
        catch (Exception ex)
        {

            throw ex;
        }
        return success;
    }

Разве не смешно, что IE9 не может сделать такую ​​простую вещь, как отображение html из слова в IFrame, не удивительно, что его популярность продолжает падать.

Ответы [ 2 ]

1 голос
/ 31 января 2012

Вам необходимо явно передать кодировку ReadAllText и WriteAllText;в противном случае по умолчанию будет UTF8.

Pass Encoding.GetEncoding(1252).

0 голосов
/ 31 января 2012

Убедитесь, что преобразованный html-файл имеет кодировку UTF-8 или UTF-32, тогда ReadAllText правильно его обнаружит. В противном случае используйте перегрузку ReadAllText, чтобы обеспечить параметр с кодировкой, используемой преобразованным.

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