如何将 html 实体转换为可读文本?

jcu*_*bic 11 character-encoding text-processing html

我想要像 ę 这样的 html 数字实体 并想将其转换为真实字符。我收到的邮件主要来自于linkedin,看起来像这样:

chciałabym zapytać, czy rozważa Pan takze udział w nowych projektach w 华沙?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

我正在使用clawsmail,切换到html 不要将其转换为文本,我尝试复制和使用

xclip -o -sel clip | html2text | less
Run Code Online (Sandbox Code Playgroud)

但它没有转换实体。有没有办法使用命令行工具获得该文本?

我能想到的唯一方法是data:text/html,<PASTE THE EMAIL>在浏览器中使用和打开它,但更喜欢命令行。

Sté*_*las 24

使用 Free recode(以前称为 GNU recode):

recode html < file
Run Code Online (Sandbox Code Playgroud)

如果您没有recodeHTML::Entities只需要解码&#x<hex>;实体,您可以手动完成:

perl -Mopen=locale -pe 's/&#x([\da-f]+);/chr hex $1/gie'
Run Code Online (Sandbox Code Playgroud)

  • 对于 recode 3.7-beta2,当前有效的命令是“recode HTML..utf-8”。 (2认同)

ste*_*ver 5

如何解码 HTML 实体?在 StackOverflow 上,您可以实现一个简单的 perl 解决方案,例如

perl -Mopen=locale -MHTML::Entities -pe '$_ = decode_entities($_)' email.txt
Run Code Online (Sandbox Code Playgroud)

例如使用您的示例文本

$ 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
Run Code Online (Sandbox Code Playgroud)

使用-Mopen=locale,I/O 在语言环境的字符集中完成。这包括来自email.txt. 它看起来email.txt只包含 ASCII 字符(使用&#x<hex>;我想的符号对这些字符进行编码的全部内容),但如果不是,您可能需要修改上述内容以使用正确的字符集解码该文件(如果它与语言环境的不同一) 而不是使用open=locale.

  • 您应该使用`-Mopen=locale` 选项,以便以用户的字符集输出文本(并使该警告消失)。 (2认同)

Ais*_*sen 5

python 3.2+版本,可以在管道中使用:

python3 -c 'import html, sys; [print(html.unescape(l), end="") for l in sys.stdin]' < file
Run Code Online (Sandbox Code Playgroud)