下記の続きです。
iPhone, Mac, ISO-2022-JP, 〜, 全角チルダとか波ダッシュについてのメモ
http://blog.s21g.com/articles/1693
あと、この記事も関係するかも:[iPhone] メール送信アプリでのツボ
結局何が書きたかったかというと、
「全角チルダ」がdataUsingEncoding:NSISO2022JPStringEncodingで「?」に置き換えられるので、何らかの回避策を探そう!…探しました!
という報告です。
以前に書いた記事で、Macでは全角チルダと波ダッシュは同じに見えるらしいことがわかりましたが、iPhoneでも同様のようです。
で、日本語キーボードで「〜」を入力する方法は二通りあります:
あいうキーボードで、わの所を右にフリック、次候補中にある〜を選択
→ 全角チルダ
数字キーボードで、0の所を左にフリック
→ 波ダッシュ
全角チルダ(〜) → ?
波ダッシュ(〜) → 〜
という風に置換されることがわかりました。
大方のユーザにとっては全角チルダを波ダッシュに変換しても問題がなさそうなので、アプリ内では下記のように変換することにしました。
1 unichar wave_dash_char = 0x301C;
2 unichar fullwidth_tilde_char = 0xFF5E;
3 NSString *wave_dash = [NSString stringWithFormat:@"%C", wave_dash_char];
4 NSString *fullwidth_tilde = [NSString stringWithFormat:@"%C", fullwidth_tilde_char];
5
6 NSString *replacedStr = [str stringByReplacingOccurrencesOfString:fullwidth_tilde withString:wave_dash];
またポンドとセントでも同じような状況が発生するので、同様の処理を行うようにしました。
1 unichar pond_char = 0x00A3;
2 unichar cent_char = 0x00A2;
3 unichar pond_char2 = 0xFFE1; //?になるポンド
4 unichar cent_char2 = 0xFFE0; //?になるセント