System.IO.File.ReadAllText (путь) не читает html-файл - PullRequest
1 голос
/ 15 марта 2010

Я хочу прочитать html-файл. И для этого я использую System.IO.File.ReadAllText (path) . Он может читать все html-файлы, но есть один файл, который не читается этой функцией.

Я также использовал

с помощью (StreamReader reader = File.OpenText (fileName)) { text = reader.ReadToEnd (); Но все же есть та же проблема.

Какая причина может быть там? И за что может быть решение? Или любой другой способ прочитать файл?

Ответы [ 3 ]

1 голос
/ 15 марта 2010

Я приму дикое предположение:
Файл содержит последовательности Юникода для расширенных символов, а диагностика основана на (несовпадающей) длине.

если я отлаживаю код в лайк «<\ 0h \ 0t \ 0м \ 0l \ 0> \ 0 <\ 0h \ 0e \ 0a \ 0d \ 0> \ 0 \ г \ 0 \ п \ 0 <\ 0M \ 0E \ 0T \ 0A \ 0 \ 0h \ 0t \ 0t \ 0Р \ 0- \ 0e \ 0q \ 0u \ 0i \ 0v \ 0 = \ 0 \ "\ 0C \ 0о \ 0n \ 0t \ 0e \ 0n </p>

Действительное начало HTML-файла , за исключением для самого первого символа. Возможно, файл поврежден из-за отсутствия в начале маркера Unicode. Этот ущерб, вероятно, был причинен, когда он был написан, и его (легко) исправить невозможно.

Вы можете попробовать установить кодирование WebClient.Encoding в UTF8 (а также попробовать несколько ASCII).

0 голосов
/ 15 сентября 2014

наткнулся на это недавно в гугле. Правильный способ сделать это - через WebClient ...

WebClient client = new WebClient();
String guestMsg = client.DownloadString("C:\\temp\\TheBarGuestDetailsEmail.htm");

File.ReadAllText испортит html при чтении, и такие символы, как £ или 'будут испорчены.

0 голосов
/ 15 марта 2010

MsgBox показывает что-нибудь? Любая ошибка? Что показывает varText.Length?

string varText = File.ReadAllText(varFile, Encoding.Default); 
MessageBox.Show(varFile + " Text: " + varText + " Lenght: " + varText.Length);

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

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