Como converter entidades html em texto legível?

7

Eu quero entidades numéricas html como & # x119; e quer convertê-lo em personagem real. Eu tenho e-mails principalmente do LinkedIn que se parecem com isso:

chciałabym zapytać, czy rozważa Pan takze udział w nowych projektach w Warszawie ? Obecnie poszukujemy specjalisty javascript/architekta z bardzo dobrą znajomością Angular.js do projektu, który dotyczy systemu, służącego do monitorowania i zarządzania flotą pojazdów. Zespół, do którego poszukujemy

Estou usando o clawsmail, mudando para html, não o converto para texto, tento copiar e usar

xclip -o -sel clip | html2text | less

mas não converteu as entidades. Existe uma maneira de ter esse texto usando ferramentas de linha de comando?

A única maneira que posso pensar é usar data:text/html,<PASTE THE EMAIL> e abri-lo em um navegador, mas preferiria a linha de comando.

    
por jcubic 08.08.2014 / 15:08

4 respostas

17

Com o GNU recode :

recode html < file

Se você não tiver recode ou HTML::Entities e precisar decodificar apenas &#x<hex>; entidades, poderá fazer isso manualmente:

perl -Mopen=locale -pe 's/&#x([\da-f]+);/chr hex $1/gie'
    
por 08.08.2014 / 16:58
4

De Como posso decodificar entidades HTML? no StackOverflow, você pode implementar uma solução simples de perl como

perl -Mopen=locale -MHTML::Entities -pe '$_ = decode_entities($_)' email.txt

por exemplo. usando o seu texto de exemplo

$ perl -Mopen=locale -MHTML::Entities -pe '$_ = decode_entities($_)' email.txt
chciałabym zapytać, czy rozważa Pan takze udział w nowych projektach w Warszawie ? Obecnie poszukujemy specjalisty javascript/architekta z bardzo dobrą znajomością Angular.js do projektu, który dotyczy systemu, służącego do monitorowania i zarządzania flotą pojazdów. Zespół, do którego poszukujemy

Com -Mopen=locale , a E / S é feita no conjunto de caracteres do local. Isso inclui a entrada de email.txt . Parece que email.txt contém apenas caracteres ASCII (o ponto inteiro de codificar esses caracteres usando a notação &#x<hex>; , suponho), mas se não, você pode precisar adaptar o acima para também decodificar esse arquivo usando o charset direito (se for não é o mesmo que o do local) em vez de usar open=locale .

    
por 08.08.2014 / 16:36
2

Uma versão do python 3.2+ pode ser usada em um pipe:

python3 -c 'import html, sys; [print(html.unescape(l), end="") for l in sys.stdin]' < file
    
por 08.03.2017 / 14:40
-1

echo -e "\x01\x19" deve fazer o truque.

    
por 08.08.2014 / 15:59