NSURL和俄罗斯域名

时间:2016-09-08 12:58:06

标签: swift nsurl cyrillic

这是一个问题,我找不到解决方案。在我的程序中,我尝试用url打开Safari,直到这个场合,这是好的:我试图将该网站与俄罗斯主机和域名链接,例如:

ImageController.Get()

然后我有一个错误:

  

致命错误:在解包可选值时意外发现nil

因此类NSURL无法在具有俄语符号的链接上创建对象。我试图使用 url.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLFragmentAllowedCharacterSet())!和类似的,但问题是它将所有“不正确”的符号更改为其他符号,但是有必要将俄罗斯网站完全链接到俄语域名,这意味着url-address中没有真正不正确的字母。

我不相信NSURL不能使用非英语符号。谁能帮我?

1 个答案:

答案 0 :(得分:1)

您需要与主机

相关的字符集
let string = "http://" + "карта.рф".stringByAddingPercentEncodingWithAllowedCharacters(.URLHostAllowedCharacterSet())!
let url = NSURL(string:string)

如果您还需要对pathquery进行编码,请使用NSURLComponents并对其他组件进行单独编码。

let components = NSURLComponents()
components.scheme = "http"
components.host = "карта.рф".stringByAddingPercentEncodingWithAllowedCharacters(.URLHostAllowedCharacterSet())

let url = components.URL!