数値文字参照「-」が文字に変換できない。
HTMLファイル内の日本語が数値文字参照で書かれていて、
それを普通の文字に変換したいと思い、以下のプログラム
で数値文字参照を文字に変換してみました。
文字コードはシフトジスです。
use Encode;
use encoding 'shiftjis';binmode(STDERR, ':raw :encoding(shiftjis)');
while (<STDIN>) {
my $line = $_;
$line =~ s/&#([0-9]{1,5});/chr($1)/eg;
$line =~ s/&#[xX]([0-9A-Fa-f]{4});/chr(unpack('S', pack('H4', $1)))/egi;
print $line;
}
ほとんどの文字はテキストエディタでも見える文字に変換されたのです
が、数値文字参照「-」(ブラウザで見るとマイナス記号?)は
変換できませんでした。
また、ブラウザ上でこの文字をコピーしてメモ帳にペーストしてみると
ちゃんとブラウザ上と同じマイナス記号?が表示されます。
原因が分かるかたがいましたら回答をお願いいたします。
補足
例えば 文字列"123"をint 123にしたいです。 WordToStrの逆の関数はないのですか? そうでなければ、皆さん1バイト毎に0x31などと比較して数値かどうか確認しているのですか?