就像this question一样,我需要将html实体(例如&
)转换为UTF-8(&
),同时忽略其他UTF-8字符。不同之处在于,在我的情况下,我需要通过bash命令行完成此操作。
我可以使用像recode
这样的工具并运行echo '&' | recode html..utf-8
,它可以很好地转换为&
,但是字符串中有UTF-8字符,比如
echo 'Arabic & ٱلْعَرَبِيَّة' | recode html..utf-8
我得到:
Arabic & Ù±ÙÙعÙرÙبÙÙÙÙØ©
当然,这不是我需要的。它应该在最后看起来像这样:
Arabic & ٱلْعَرَبِيَّة
有没有一种方法可以做到这一点,而不需要一堆混乱和看似无穷无尽的正则表达式?谢谢
2条答案
按热度按时间rmbxnbpk1#
perl一行程序:
需要HTML::Entities模块,它是较大的HTML::Parser捆绑包的一部分。通过您的操作系统包管理器或常用的CPAN客户端安装。
gpnt7bae2#
我在尝试使用
recode
重新编码葡萄牙语文本时遇到了类似的问题。出现这个问题是因为recode
假设输入文本是用ISO-8859-1 (Latin Alphabet Number 1)编码的。为了解决这个问题,我在一个序列中使用了
recode
2次。请参阅葡萄牙语示例:
请注意,我使用
--diacritics
来忽略像&
,<
,>
,'
这样的字符。防止&
字符被转换为&
是非常重要的。文档不清楚,但你可以在源代码中看到它。在第一个
recode
命令中,带有diacritics的字母被转换为它们对应的HTML实体:请注意,
é
被替换为é
('e'与acute accent)。第二个
recode
命令将HTML实体转换为UTF-8:请注意,
é
已替换为é
。您的示例如下所示: