哪种NSString编码方法将百分比(& )字符正确地转换为%26
?
stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding
获取空格(%20)和其他坏人但忽略了&符号!?!
答案 0 :(得分:43)
该方法不会处理&符号,因为它们是URL中的合法字符。在这次电话会议之前,您应该可以预先处理特别有问题的作品。
答案 1 :(得分:23)
这是从Bagonca blog对你的NSStrings进行url编码的问题的一个很好的解决方案:
+ (NSString *)urlEncodeValue:(NSString *)str
{
NSString *result = (NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef)str, NULL, CFSTR(":/?#[]@!$&’()*+,;="), kCFStringEncodingUTF8);
return [result autorelease];
}
为ARC兼容性添加CFBridgingRelease(
。
+ (NSString *)urlEncodeValue:(NSString *)str
{
NSString *result = (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef)str, NULL, CFSTR(":/?#[]@!$&’()*+,;="), kCFStringEncodingUTF8));
return result;
}
答案 2 :(得分:8)
接受的答案不太正确我不认为,你需要处理字符串 后调用addPercentEscapesAndReplaceAmpersand
+ (NSString *) addPercentEscapesAndReplaceAmpersand: (NSString *) stringToEncode
{
NSString *encodedString = [stringToEncode stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding];
return [encodedString stringByReplacingOccurrencesOfString: @"&" withString: @"%26"];
}