NSURL URLWithString:为非英语重音字符

时间:2010-01-23 23:39:28

标签: cocoa special-characters nsurl

我有以下字符串......

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

请注意,它有一些重音字符。当我尝试将其转换为url时,返回的url为null ...

[NSURL URLWithString:googleSearchString];

通常,除非字符串中有重音非英语字符,否则url会起作用。有关如何处理的任何帮助吗?

5 个答案:

答案 0 :(得分:70)

您需要转义特殊字符才能使其正常工作。类似的东西:

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

答案 1 :(得分:7)

  

使用Swift 2.2

要转义非英语字符,例如:发出网址请求,请执行以下操作:

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

此处urlPathOptionalpath是您的原始网址(非英文字符的网址)

答案 2 :(得分:5)

将此用于 SWIFT 4:

let url = myURLString.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)
let myURL = URL(string: url)

答案 3 :(得分:0)

在2k16中,方法stringByAddingPercentEscapesUsingEncoding:已被弃用,并且无法正确转义此方法。当预定义URL时,只使用浏览器编码的字符串,因为stringByAddingPercentEncodingWithAllowedCharacters:方法无法转义整个URL。

答案 4 :(得分:-1)

有时,网址中的空格可能会导致此问题。