22 July 2011

(Perl) HTMLエンティティ文字のデコードとエンコード

HTMLエンティティ文字をデコード、エンコードするPerlスクリプト

HTMLエンティティ文字とは 「&で始まる特殊文字」で、こんな感じに文章中に現れる。

Situé à 1000 mètres.

これをデコードしたら、「Situé à 1000 mètres.」というようになる。

コマンドライン上でパイプを使ってテキストファイルを流し込むスクリプトは次のようなものにしておけば、とりあえず変換だけはしてくれるようだ

デコード用スクリプト

#!/usr/bin/perl

use strict;
use warnings;
use utf8;
use HTML::Entities;

binmode(STDIN, ":utf8");
binmode(STDOUT, ":utf8");

my $str = join("\n", <>);

$str = HTML::Entities::decode_entities($str);

print $str;

エンコード用スクリプト

#!/usr/bin/perl

use strict;
use warnings;
use utf8;
use HTML::Entities;

binmode(STDIN, ":utf8");
binmode(STDOUT, ":utf8");

my $str = join("\n", <>);

$str = HTML::Entities::encode_entities($str);

print $str;