stringByReplacingPercentEscapesUsingEncoding方法无法正常工作,因为它不解码不以%字符开头的特殊符号,即+字符。有谁知道在iOS中更好的方法吗?
以下是我目前正在使用的内容:
NSString *path = [@"path+with+spaces"
stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
这是输出的一个例子:
路径与+ +空格
答案 0 :(得分:51)
NSString *path = [[@"path+with+spaces"
stringByReplacingOccurrencesOfString:@"+" withString:@" "]
stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
请注意,for-for-space替换仅用于application/x-www-form-urlencoded
数据 - URL的查询字符串部分或POST
请求的正文。
答案 1 :(得分:20)
// 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/)
答案 2 :(得分:2)
如果您尝试使用百分比转义替换加号,请执行从“+”到“”(单个空格)的字符串替换。然后使用stringByAddingPercentEscapesUsingEncoding:
添加百分比转义。
加号是从未编码的许多保留URL字符之一。
(stringByReplacingPercentEscapesUsingEncoding:
解码转义百分比)
答案 3 :(得分:1)
swift 2:
years = data["year"].apply(lambda date: datetime.strptime(date, '%m/%d/%Y %H:%M:%S %p').year)
答案 4 :(得分:0)
您还可以使用Cocoapods中的PercentEncoder库。
快捷键4
将该库包含到您的Podfile中:
pod PercentEncoder
导入库PercentEncoder
导入PercentEncoder
ViewController类{
...
}
将“ +”字符替换为“%20”,并使用方法“ ped_decodeURI”
“ path + with + spaces” .replacingOccurrences(of:“ +”,with:“%20”)。ped_decodeURI()
它将返回“带空格的路径”