NSURL URLWithString:与非英语重音字符为null

我有以下string…

NSString *googleSearchString = @"http://www.google.com/search?q=lyrics+%22Tænder+På+Dig%22+%22Jakob+Sveistrup%22"; 

注意它有一些重音字符。 当我试图把它变成一个url返回的url为空…

 [NSURL URLWithString:googleSearchString]; 

所以通常的url工作,除非在string中有重音的非英文字符。 任何帮助如何处理?

您需要转义特殊字符才能正常工作。 就像是:

 [NSURL URLWithString:[googlSearchString stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]]; 

使用Swift 2.2

对于非英文字符的转义,例如: 做一个URL请求做:

let urlPath = path.URLString.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())

这里的urlPath是一个Optional path是你的原始URL(非英文字符)

在2k16方法stringByAddingPercentEscapesUsingEncoding:已被弃用,并没有办法正确地转义。 当预定义的URL只使用浏览器编码的string,因为stringByAddingPercentEncodingWithAllowedCharacters:方法不能逃脱整个URL。

有时候,url中的空格会导致这个问题。