.NET: конвертировать .doc в .htm результаты в стиле фанк символов - PullRequest
1 голос
/ 07 ноября 2008

Я использовал автоматизацию MS Word для сохранения .doc в .htm. Если в файле .doc есть маркеры, они нормально сохраняются в .htm, но когда я пытаюсь прочитать файл .htm в строку (поэтому я могу впоследствии отправить в базу данных для окончательного хранения в виде строки, а не BLOB-объектов), маркеры преобразуются в знаки вопроса или другие символы в зависимости от кодировки, используемой для загрузки в строку.

Я использую это, чтобы прочитать текст:

string html = File.ReadAllText(myFileSpec);

Я также пытался использовать StreamReader, но получаю те же результаты (возможно, он используется внутри File.ReadAllText).

Я также попытался указать каждый тип кодировки во второй перегрузке File.ReadAllText:

string html = File.ReadAllText(originalFile, Encoding.ASCII);

Я перепробовал все доступные перечисления для типа Encoding.

Есть идеи?

Ответы [ 5 ]

3 голосов
/ 07 ноября 2008

В моей системе (на английском и американском языках) Word сохраняет файлы * .htm в кодовой странице Windows-1252. Если ваша система использует эту кодовую страницу, вы должны прочитать ее как

.
string html = File.ReadAllText(originalFile, Encoding.GetEncoding(1252));

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

0 голосов
/ 08 ноября 2008

ОК, видимо, я солгал в своем первом заявлении. Я думал, что пробовал каждую кодировку, но я не пробовал это:

data = File.ReadAllText(tempFile, Encoding.Default);

Можно подумать, что перегрузка этого метода, когда вы НЕ указываете кодировку, будет работать нормально, ожидая, что кодировка по умолчанию будет, ну, в общем, Encoding.Default. Тем не менее, он на самом деле использует Encoding.UTF8 по умолчанию. Надеюсь, это поможет кому-то еще.

0 голосов
/ 07 ноября 2008

Разве проблема не в том, что преобразование Word .doc в .html превращает маркеры в вопросительные знаки (и не имеет ничего общего с File.ReadAllText или StreamReader и т. Д.)?

т.е. к тому моменту, когда он достигает File.ReadAllText, это уже вопросительный знак.

Когда я преобразовываю простой простой список Word в HTML в Word 2003, я получаю

 <ul style='margin-top:0cm' type=disc> 
     <li class=MsoNormal style='mso-list:l0 level1 lfo1;tab-stops:list 36.0pt'>
       <span lang=EN-GB style='mso-ansi-language:EN-GB'>Test 1</span>
     </li> 
     <li class=MsoNormal style='mso-list:l0 level1 lfo1;tab-stops:list 36.0pt'>
       <span lang=EN-GB style='mso-ansi-language:EN-GB'>Test 2</span>
     </li> 
 </ul>

Это некрасиво, но в нем нет ничего, что могло бы стать знаком вопроса

0 голосов
/ 07 ноября 2008

Как эти символы выглядят в файле HTML? Что такое объявление кодировки этого файла (в метатеге «Content-Type»)? В идеале эти символы должны быть преобразованы в объекты или символы UTF-8.
Ответ на эти вопросы может привести вас к решению ...: -)

0 голосов
/ 07 ноября 2008

Вы пытались открыть файл в двоичном режиме. Если вы откроете в тестовом режиме, я думаю, что это расколоть символы Unicode.

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