LoginSignup
12
11

More than 5 years have passed since last update.

日本語ドメイン or クエリ付きURLを変換する

Posted at

日本語ドメインやクエリに含まれる日本語を簡単に変換してくれるNSStringカテゴリを見つけました。

:octocat: Wevah/Punycode-Cocoa

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ブラウザを開発中です! 初アプリになるので無事に公開できたら是非一度試してみてください :bow:

12
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
11