如何删除/解码URL百分比编码?

use*_*801 17 objective-c nsurl nsstring nsurlconnection ios

我想把url它转换成更易读的格式.例如,我有以下链接:

http://en.wikipedia.org/wiki/S%C3%A1ndor_Font
Run Code Online (Sandbox Code Playgroud)

我带走了不必要的部分,并留下了"S%C3%A1ndor_Font"作为一个NSString.有没有什么方法可以将其转换为"Sándor Font"(它实际上应该是什么),而不必键入特殊字符的每个组合并替换字符串的每个部分?

为了演示我想如何使用它,我编写了以下示例代码:

   //request is a NSURLRequest with a url of http://en.wikipedia.org/wiki/S%C3%A1ndor_Font

    NSRange range = [[request.URL absoluteString] rangeOfString:@"/wiki/"];

    NSString *substring = [[[request.URL absoluteString] substringFromIndex:NSMaxRange(range)] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];

    //ArticleTitleLabel is a UILabel

    self.ArticleTitleLabel.text = substring;
Run Code Online (Sandbox Code Playgroud)

最后,我希望标签说"Sándor Font"没有"S%C3%A1ndor_Font".谢谢!

Jos*_*eek 39

- (NSString *)stringByReplacingPercentEscapesUsingEncoding:(NSStringEncoding)encoding; 在NSString是你想要的.

[substring stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
Run Code Online (Sandbox Code Playgroud)

  • 'stringByReplacingPercentEscapesUsingEncoding:'已弃用:首先在macOS 10.11中弃用 - 请改用-stringByRemovingPercentEncoding,它始终使用推荐的UTF-8编码. (2认同)

Fra*_*kie 35

对于iOS10/Swift 3:

substring.removingPercentEncoding

对于iOS9/Swift 2.3:

substring.stringByRemovingPercentEncoding


que*_*ful 12

斯威夫特3

str.removingPercentEncoding
Run Code Online (Sandbox Code Playgroud)


Ser*_* Di 5

Swift 4.2(Linux 支持)

let percentString = "hello%20world"
let string = NSString(string: percentString).removingPercentEncoding!
print(string) // hello world
Run Code Online (Sandbox Code Playgroud)