51

我有以下字符串...

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

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

[NSURL URLWithString:googleSearchString];

因此,除非字符串中有带重音的非英语字符,否则 URL 正常工作。关于如何处理的任何帮助?

4

5 回答 5

73

您需要转义特殊字符以使其正常工作。就像是:

[NSURL URLWithString:[googlSearchString stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]];
于 2010-01-23T23:44:59.450 回答
10

Use this for SWIFT 4:

let url = myURLString.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)
let myURL = URL(string: url)
于 2018-02-23T11:08:24.297 回答
7

使用 Swift 2.2

对于转义非英语字符,例如:发出 URL 请求,请执行以下操作:

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

urlPath是一个Optional并且path是您的原始网址(带有非英文字符的网址)

于 2016-04-19T19:59:32.323 回答
1

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

于 2016-12-12T15:16:15.573 回答
-1

有时,url 中的空格会导致此问题。

于 2013-09-10T05:52:51.213 回答