「〜」が文字化けして?になる
piCal 0.6で出力したiCalendarをOutlook 2000に取り込むと、データ中の「〜」が「?」に文字化けする現象。
iCalendar(icsファイル)をUTF-8に変換して出力している。OutlookはicsファイルをUTF-8からシフトJISに変換してインポートする。どうもこのあたりが怪しい。
元データの「〜」はEUC-JP。UTF-8に変換されたicsファイルを od コマンドでダンプしたら、「〜」は
0xE3 0x80 0x9C
になっていた。
UTF-8のビット列パターンは
aaaa bbbb cccc dddd
を以下のように展開する:
1110 aaaa 10bb bbcc 10cc dddd
なので、これは \u301C だ。つまりWAVE DASHになっている。
ということは、OutlookはUTF-8のWAVE DASHをシフトJISに変換するとき、これを「〜」として認識しないということだろう。マイクロソフトのシフトJISはCP932という規格らしく、「〜」をFULLWIDTH TILDEに対応付けるらしい。