2012-01-30 1 views
0

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

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 pass 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 не удивительно, что популярность продолжает падать.

+1

Никогда не пишите 'throw ex'. – SLaks

+0

Какая кодировка является файлом? – SLaks

+0

Как я могу определить кодировку файлов? – smoothe

ответ

1

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

Pass Encoding.GetEncoding(1252).

0

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

Смежные вопросы