http://d.hatena.ne.jp/end0tknr/20100613/1276427626
以前、書いたmysqlのcollateに関連するかもしれませんが、Unicode::Normalize というperl moduleを見かけました。
http://d.hatena.ne.jp/dayflower/20060605/1149478073
「①→1」や「㈱→(株)」ができるようですが、これら(\x{3231} 等)の正規化定義は、どこにあるんだろう?
perl本体の中かな? それともunicode.org? 実際に使う際に調べるつもりです。
#!/usr/local/bin/perl use strict; use utf8; use Encode; use Unicode::Normalize; main(); sub main { my $chars = { "\x{3231}" => '(株)', "\x{2460}" => '1', "\x{3042}" => 'あ', "\x{ff8a}" => 'ハ', "\x{00a9}" => 'copyright', "\x{33a1}" => 'm', "\x{2103}" => '℃', "\x{2121}" => 'TEL' }; for my $chr (sort keys %$chars) { my $desc = $chars->{$chr}; my $nfkc = Unicode::Normalize::NFKC($chr); print Encode::encode('utf8', "${chr}\t${nfkc}\t${desc}\n"); } }
実行結果
$ ./foo.pl © © copyright ℃ °C ℃ ℡ TEL TEL ① 1 1 あ あ あ ㈱ (株) (株) ㎡ m2 m ハ ハ ハ $