ホワイト日記

柏での日々をつれづれなるままに書き記したいと思います.

utf-8 文字の正体を調べるスクリプト

2006-11-10 21:55:28 | その他
ウェブログ記事を収集していると,意図しない文字が
混入してしまい,文字化けしてしまうことがあります.
そうした文字化けの原因を探るためのPerlスクリプトを
書いてみました.

#!/usr/local/bin/perl

use Data::Dumper;
use Unicode::UCD qw/charinfo charblock/;

my $file = shift; # ファイル名を引数に取る
my $text;
{
local $/;
open(IN, "<:utf8", $file); # 入力ファイルはUTF-8とする
$text = <IN>;
close(IN);
}

my $len = length($text);

# 1文字ずつループさせる
for(my $i = 0; $i < $len; $i++) {
my $char = substr($text, $i, 1);
my $num = ord($char); # 10進数でのコード
printf "%d: %s(%d)n", $i, $char, $num;

# 文字コード確認
unless ($char =~ /[x00-x7e]/) { # ASCII文字以外なら
my $charinfo = charinfo($num); # Unicode::UCD::charinfo でその文字の素性を確認
print "="x56, "n";
print Dumper($charinfo);
print "="x56, "n";
}
}

結果は下のような形で表示されます.
これをもとに記事中にどんな文字が含まれていたかを把握し,
必要であればその文字に対処する処理を書き加えます.
========================================================
$VAR1 = {
'digit' => '',
'bidi' => 'L',
'category' => 'Lo',
'code' => '3041',
'script' => 'Hiragana',
'combining' => '0',
'upper' => '',
'name' => 'HIRAGANA LETTER SMALL A',
'unicode10' => '',
'decomposition' => '',
'comment' => '',
'mirrored' => 'N',
'lower' => '',
'numeric' => '',
'decimal' => '',
'title' => '',
'block' => 'Hiragana'
};
========================================================

ブログ記事の収集はいつも文字化けとの戦いです(^_^;)

最新の画像もっと見る