max osxユーザから頂いたファイルを見ると、ファイル名が「ハ , ゙ , ッ , チ」や「ハ , ゚ , ソ , コ, ン」のように濁音や半濁音が独立(離れた)状態になっている。
どうやら、NFD でnormalizedされたutf8らしいので、次のようなscriptを書いて、実行すると...
#!/usr/local/bin/perl use strict; use utf8; use Encode qw/encode decode :fallbacks/; use Unicode::Normalize 'normalize'; use Data::Dumper; main(); sub main { for my $normalize ('D','C','KD','KC'){ for my $org_char (qw/は ば ぱ ハ バ パ ハ バ パ/){ my $new_char = normalize($normalize , $org_char); my $org_char_no = encode('ascii',$org_char,FB_XMLCREF); my $new_char_no = encode('ascii',$new_char,FB_XMLCREF); my $out_str = join (' ', $normalize,':', "$org_char ($org_char_no)", '->', "$new_char ($new_char_no)"); print encode('utf8',$out_str),"\n"; } } }
実行結果
[endo@colinux tmp]$ ./foo.pl D : は (は) -> は (は) D : ば (ば) -> ば (ば) D : ぱ (ぱ) -> ぱ (ぱ) D : ハ (ハ) -> ハ (ハ) D : バ (バ) -> バ (バ) D : パ (パ) -> パ (パ) D : ハ (ハ) -> ハ (ハ) D : バ (バ) -> バ (バ) D : パ (パ) -> パ (パ) C : は (は) -> は (は) C : ば (ば) -> ば (ば) C : ぱ (ぱ) -> ぱ (ぱ) C : ハ (ハ) -> ハ (ハ) C : バ (バ) -> バ (バ) C : パ (パ) -> パ (パ) C : ハ (ハ) -> ハ (ハ) C : バ (バ) -> バ (バ) C : パ (パ) -> パ (パ) KD : は (は) -> は (は) KD : ば (ば) -> ば (ば) KD : ぱ (ぱ) -> ぱ (ぱ) KD : ハ (ハ) -> ハ (ハ) KD : バ (バ) -> バ (バ) KD : パ (パ) -> パ (パ) KD : ハ (ハ) -> ハ (ハ) KD : バ (バ) -> バ (バ) KD : パ (パ) -> パ (パ) KC : は (は) -> は (は) KC : ば (ば) -> ば (ば) KC : ぱ (ぱ) -> ぱ (ぱ) KC : ハ (ハ) -> ハ (ハ) KC : バ (バ) -> バ (バ) KC : パ (パ) -> パ (パ) KC : ハ (ハ) -> ハ (ハ) KC : バ (バ) -> バ (バ) KC : パ (パ) -> パ (パ)
Encode::UTF8Mac というmoduleもあるらしい
http://search.cpan.org/perldoc?Encode::UTF8Mac