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。(後者はインプレースで動作します。)


今答えに。

(ちょっと時間があったので、答えの推測を確認できません。)

parseデコードされたバージョンではなく、生のHTMLを(ドキュメントにあるように)に渡す必要があります。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...
于 2013-05-25T05:58:46.243 に答える