2014年12月20日土曜日

フィーチャーフォンからスマホへ電話帳を移行する際のふりがな問題について

 PHSから携帯電話へのMNPが始まったので、WX03Kの3年縛り解禁を機にIIJmioへ乗り換えました。とりあえず昔使っていたスマートフォンに入れて使っていたのですが、せっかくなので新しいスマートフォンが欲しくなり、現在はグローバル版のXPERIA Z3 Compactオレンジを使っています。Z UltraとXperia Linkしたりと、色々便利になりました。
ソニーモバイル Xperia Z3 Compact

 Gmailの電話帳と携帯電話の電話帳を全く別のものとして運用したかったことから、Android端末本体の連絡先にWX03Kの電話帳を移動させようとしたのですが、WX03Kの電話帳は拡張子.kbfの京セラ独自形式で、中身がバイナリのため単純に書き換えてインポートできる形式にすることができません。この問題は道具さえ用意できれば簡単に解決可能で、WX03Kから昔使っていたSH-11Cへ赤外線を使って電話帳を移動すればSH-11Cの機能で電話帳をvCard形式としてエクスポートできました。

 ここからが問題で、このvCardファイルをAndroidにインポートするとふりがな情報がインポートされずに抜け落ちてしまいます。これでは連絡帳があいうえお順ではなく漢字の文字コード順で並ぶことになり、非常に気持ち悪い。

 そこでSH-11CがエクスポートするvCardとAndroidがエクスポートするvCardを比較してみると、いくつか違いが見えてきました。vCardでフリガナを表すSOUND;X-IRMC-N;CHARSETの項目に、SH-11CはSHIFT_JIS、AndroidはUTF-8と記載されています。文字コードもこれと同様です。SH-11CからエクスポートしたvCardを開き、SHIFT_JISと書かれた部分をUTF-8へ置換し、文字コードをUTF-8に変えて保存すればいいわけです。これでAndroidでフリガナをインポートできるvCardとなったわけです。
SH-11CのvCardはSHIFT_JIS

AndroidのvCardはUTF-8

参考までに、UTF-8と書き換えるだけ、文字コードをUTF-8にするだけではインポートできても文字化けしてしまいます。両方の変更が必要です。

 これでふりがなも含めてインポートできるようになったのですが、次の問題が発生しました。連絡帳の名前の最後に;(セミコロン)が付いてるのです。それも付いたり付いていなかったりして、何が原因なのかいまいちよくわかりません。

 もう一度vCardを開いてみると、原因がわからないなりにも対処法が見えました。名前の後ろに;が付く項目は、行末に\(円)が付いていたのです。vCardの書式において;はフィールドの区切りを示しており、フィールドの内部に;を使う場合はエスケープとして\を使います。この\が名前の一部として判断されていたわけです。対処法としては行末の\を削除すればいいわけです。今回は\;を;に置換することで対処しました。これでAndroidへフリガナ付きでインポートできるvCardができました。

 この問題、ネットで色々調べてGmailの連絡帳にインポートしろって解決法しか出てきませんでした。Androidスマートフォンを買うに際して初めてGmailアカウントを作成したような人ならこれでいいのでしょうが、私のGmailの連絡帳は10年以上携帯電話と分けて使ってきたためメールアドレス主体であり、色々と雑多で連絡を取らない人までまとめて載っているので、これを電話番号主体の携帯電話の電話帳と合体させるとあまりにも使い勝手が悪いのです。この問題で困る人はけっこういそうなものなんですけどね…?