

`[[UIApplication sharedApplication] openURL:@""]`  
にて、日本語が含まれるURLが開けなくなったのですが、情報をお持ちの方はいらっしゃいますか？

コンソールには  
`LaunchServices: ERROR: There is no registered handler for URL scheme (null)`  
と表示されます。

開けないのは例えば以下のリンクになります。  
`[[UIApplication sharedApplication] openURL:@"http://お名前.com"];`  
`[[UIApplication sharedApplication] openURL:@"instagram://tag?name=焼肉"];`

それぞれSafariからは開けるので、実装上の不具合かなと思っています。  
しかし、日本語の含まれないURLであれば上記のソースコードでURLを開くことはできます。  
もともとは日本語を含むURLでも開けていたのですが、Xcode7にアップデートしたあたりから開けなくなったような気がしています。

何かできることがあれば教えていただきたいです。  
よろしくお願い致します。


CC BY-SA 3.0
2015-10-15T13:11:05.333
17685
2015-10-15T15:52:44.900
12796
question
ios objective-c
Objective-CのopenURLで日本語URLが開けない


ドメイン名に日本語が含まれる場合はPunycodeエンコーディングが必要です。  
クエリに日本語が含まれる場合はパーセントエンコーディングが必要です。

共に対応しているライブラリがGitHubで公開されていました。  
[Punycode-Cocoa](https://github.com/Wevah/Punycode-Cocoa)を使えば簡単に対応できます。

試しに使ってみたところ、

[code]

    NSString *name = @"http://お名前.com";
    NSURL *url = [NSURL URLWithString:name.encodedURLString];
    [[UIApplication sharedApplication] openURL:url];
    
[/code]

でSafariが起動して正しくページが表示されました。  
URLが`https://www.google.co.jp/search?q=日本語`のパターンでも全く同じコードで問題なく開けました。  
なので、`instagram://tag?name=焼肉`もこれでいけるのではないでしょうか？


CC BY-SA 3.0
2015-10-15T15:52:44.900
17694
2015-10-15T15:52:44.900
8968
17685
answer