如何在iOS中进行URL解码 – Objective C
stringByReplacingPercentEscapesUsingEncoding方法工作不正常,因为它不解码不以%字符开头的特殊符号,即+字符。 有没有人知道更好的方法来做到这一点在iOS?
这是我目前使用的:
NSString *path = [@"path+with+spaces" stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
这里是一个输出的例子:
path+与+空格
NSString *path = [[@"path+with+spaces" stringByReplacingOccurrencesOfString:@"+" withString:@" "] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
请注意,加空间replace仅适用于application/x-www-form-urlencoded
数据 – URL的查询string部分或POST
请求的主体。
// Decode a percent escape encoded string. - (NSString*) decodeFromPercentEscapeString:(NSString *) string { return (__bridge NSString *) CFURLCreateStringByReplacingPercentEscapesUsingEncoding(NULL, (__bridge CFStringRef) string, CFSTR(""), kCFStringEncodingUTF8); }
http://cybersam.com/ios-dev/proper-url-percent-encoding-in-ios
这似乎是首选的方式,因为…“显然”这是一个“错误”苹果已经意识到,但他们还没有做任何事情呢…( http://simonwoodside.com/weblog/2009 / 4/22 / how_to_really_url_encode / )
如果您尝试用百分比换码replace加号,请执行从“+”到“”(单个空格)的stringreplace。 然后使用stringByAddingPercentEscapesUsingEncoding:
来添加百分号转义。
加号是从不编码的许多保留的URL字符之一。
( stringByReplacingPercentEscapesUsingEncoding:
解码转义百分比)
迅捷2:
extension String { func uriDecodedString() -> String? { return self.stringByReplacingOccurrencesOfString("+", withString: " ").stringByRemovingPercentEncoding } }