日本語ドメインやクエリに含まれる日本語を簡単に変換してくれるNSStringカテゴリを見つけました。
2つのファイル NSStringPunycodeAdditions.h/m
をプロジェクトの中に入れ #import "NSStringPunycodeAdditions.h"
で読み込みます。
// ホスト例1 .com
NSString *target1 = @"お名前.com";
NSLog(@"%@: %@", target1, [target1 IDNAEncodedString]);
// => お名前.com: xn--t8jx73hngb.com
// ホスト例2 .jp
NSString *target2 = @"総務省.jp";
NSLog(@"%@: %@", target2, [target2 IDNAEncodedString]);
// => 総務省.jp: xn--lhr645fjve.jp
// クエリ付き例
NSString *target3 = @"https://www.google.co.jp/search?q=日本語";
NSLog(@"%@: %@", target3, [target3 encodedURLString]);
// => https://www.google.co.jp/search?q=日本語: https://www.google.co.jp/search?q=%E6%97%A5%E6%9C%AC%E8%AA%9E
日本語が含まれるホストの場合はIDNAEncodedString
、クエリに使われる日本語にはencodedURLString
を使えばいいようです。便利ですね。
ちなみにデコードは以下のように。
NSString *encodedTarget1 = @"xn--t8jx73hngb.com";
NSLog(@"%@", [encodedTarget1 IDNADecodedString]);
// => お名前.com
NSString *encodedTarget2 = @"xn--lhr645fjve.jp";
NSLog(@"%@", [encodedTarget2 IDNADecodedString]);
// => 総務省.jp
NSString *encodedTarget3 = @"https://www.google.co.jp/search?q=%E6%97%A5%E6%9C%AC%E8%AA%9E";
NSLog(@"%@", [encodedTarget3 decodedURLString]);
// => https://www.google.co.jp/search?q=日本語
PR: 現在iOS8に向けたiPhoneブラウザを開発中です! 初アプリになるので無事に公開できたら是非一度試してみてください