Subscribed unsubscribe Subscribe Subscribe

AU携帯からiPhoneへ変更

Perl iPhone

AU携帯からアドレス帳をmicroSDカードにバックアップし、そのVCFデータをMacのAddress Book.appで読み込んでiPhoneと同期させてみたら、見事に全部移行できた!
…が、名前のふりがなが反映されていない…!!
今までの携帯では名前に対してフリガナを半角カタカナで入力していたが、iPhoneでは姓、名それぞれで全角のふりがなを振ることになる。
数件だけなら手打ちで何とかなるけど、何故か400件超の電話帳データがあってウンザリしたのと、ちょっとした興味から、例によってPerlスクリプトで旧携帯のVCFデータから半角カタカナのフリガナを取り出して全角ひらがなで姓と名で分けて出力させてみよう、としてみた。これを今のMac内のAddress Book.appで使っているデータに組み込んでいけばほぼ自動でふりがなを登録できる…はず!?

#!/usr/bin/perl
use strict;
use warnings;
use Encode;
use Encode::JP::H2Z;
use Unicode::Japanese;

my @array = ();
my %data;
for (<>) {
    chomp;
    %data = () if /^BEGIN:VCARD$/;
    push @array, {%data} if /^END:VCARD$/;

    (my $key, my $value) = split(/:/, $_);
    next unless defined $value;
    Encode::from_to($value, 'shift-jis', 'utf-8');
    $data{$key} = $value;
}

for (@array) {
    my $name = $_->{'SORT-STRING'};
    Encode::from_to($name, "utf-8", "euc-jp");
    Encode::JP::H2Z::h2z(\$name);
    Encode::from_to($name, "euc-jp", "utf-8");
    my $uj = Unicode::Japanese->new($name, 'utf8');
    my $hira = $uj->kata2hira->get;
    print $name, "\n";
    (my $sei, my $mei) = split(/ +/, $hira);
    print "[$sei]";
    print "-[$mei]" if defined $mei;
    print "\n";
}

文字コードに対する理解が全然足りてない…orz