NSURL returns nil 当传递一个带有非 ascii 字符的主机名的 HTTP url

NSURL returns nil when passing a HTTP url with a hostname with non-ascii characters

如果您尝试从这个 URL 创建一个 NSURL,它 returns nil(在 OS X 10.11.6 上观察到):

http://夜景バーラウンジ-majestic汐留.com/

使用主机名的替代表示的 URL 工作正常:

http://xn---majestic-zv4hsg0krlzerfp952e1lybpewawh3b.com/

如果你只有 URL 的第一个版本,有什么方法可以让它继续与 NSURL 一起使用吗?

这应该适用于大多数情况:

NSString *urlStr = @"http://夜景バーラウンジ-majestic汐留.com/";
urlStr = [stringToConvert stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *url = [NSURL URLWithString:urlStr];