2015-05-03 3 views
0

Итак, прежде всего, я не говорю о питоне html2text, но инструменте командной строки: http://www.mbayer.de/html2text/html2text: преобразовать специальные символы

Я использую этот инструмент как часть моей программы, чтобы сгенерировать небольшой текст-превью для html статьи. До сих пор это линия я использую:

html2text -utf8 -nobs -style pretty filename.html 

К сожалению, сейчас я наткнулся на HTML-кода, который использует специальные символы, такие как

ä 

те не преобразуются к «» или даже «ae», как и ожидалось.

Например, строка:

<p class="caption">Steve Ballmer, Jahrgang 56, wird zumindest auf diesem Bild auf 56 Jahre gesch&#xE4;tzt. </p> 

должны быть преобразованы в:

Steve Ballmer, Jahrgang 56, wird zumindest auf diesem Bild auf 56 Jahre geschätzt. 

но производит эту линию здесь вместо:

Steve Ballmer, Jahrgang 56, wird zumindest auf diesem Bild auf 56 Jahre gesch&#xE4;tzt. 

В документации сказано:

По умолчанию, когда -nometa предоставляется, html2text использует ISO 8859-1 для ввода. Указав этот параметр, вместо этого используется UTF-8 (как для ввода, так и для вывода).

Так что я попытался оставить «-utf8» и использовать «-nometa». Но все тот же результат :( Я пропускаю вариант?

Thx для вашей помощи заранее.

+0

В документации также указано, что «большинство конструкций HTML 4 также выделяются [sic], включая большинство SGML-объектов, при условии, что они записаны как« именованные объекты », а не как числовое значение», что предполагает, что это известное ограничение. –

ответ

0

вы пытались (HTML) аккуратным?

tidy filename.html | html2text -utf8 -nobs -style pretty 

может быть, в том числе подавление вывода ошибок :

tidy filename.html 2>/dev/null | html2text -utf8 -nobs -style pretty 

по крайней мере, простой пункт в вашем примере законченный

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> 
<html> 
<head> 
<meta name="generator" content= 
"HTML Tidy for Linux (vers 25 March 2009), see www.w3.org"> 
<title></title> 
</head> 
<body> 
<p class="caption">Steve Ballmer, Jahrgang 56, wird zumindest auf 
diesem Bild auf 56 Jahre gesch&auml;tzt.</p> 
</body> 
</html> 
Смежные вопросы