我正在尝试使用perl删除HTML特殊符号。我尝试使用这个HTML :: Strip,编码qw(_utf8_on);
use Encode qw( _utf8_on );
_utf8_on($string);
print "$string\n\n";
Output: Clearance Subject Male control 5 1-a 21 31â ±â2 74
use HTML::Strip;
my $hs = HTML::Strip->new();
my $clean_text = $hs->parse($string);
print "$clean_text\n";
Ouput: Clearance Subject Male control 5 1-a 21 31â ñâ2 74
Expected output: Clearance Subject Male control 5 1-a 21 31±2 74
有人可以帮助我吗?
提前致谢
答案 0 :(得分:0)
首先,永远不要使用_utf8_on
。如果要解码字符串,请使用Encode的decode_utf8
或内置utf8::encode
。 (后者就地工作。)
现在回答。
(刚刚得到一分钟,所以我无法验证我对答案的猜测。)
您需要将原始HTML(如文档所述)传递给parse
,而不是它的某些解码版本。在utf8::downgrade($string);
之前添加$hs->parse($string);
将检测到您的一些错误,它将解决HTML :: Strip中很少发生的错误。
如果您这样做,原始字符串是包含
的HTML文档...Clearance Subject Male control 5 1-a 21 31±2 74...
你应该得到以下输出:
...Clearance Subject Male control 5 1-a 21 31±2 74...