1

我正在尝试使用 perl 删除 HTML 特殊符号。我尝试使用这个 HTML::Strip,Encode 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

有人可以帮助我吗?

提前致谢

4

1 回答 1

0

首先,永远不要使用_utf8_on. 如果要解码字符串,请使用 Encodedecode_utf8或内置的utf8::encode. (后者就地工作。)


现在回答。

(只有一秒钟,所以我无法验证我对答案的猜测。)

您需要将原始 HTML(如文档所说)传递给parse,而不是它的某些解码版本。添加utf8::downgrade($string);before$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...
于 2013-05-25T05:58:46.243 回答