【问题标题】:stringbyaddingpercentescapesusingencoding:NSUTF8StringEncoding not converting some special charactersstringbyaddingpercentescapesusingencoding:NSUTF8StringEncoding 不转换某些特殊字符
【发布时间】:2014-07-15 10:04:12
【问题描述】:
在我的应用程序中,我使用stringbyaddingpercentescapesusingencoding:NSUTF8StringEncoding 来转换特殊字符。但有些字符(如 &、-、')没有转换。
冲突前的蜇伤:Macklemore 和 Ryan Lewis - Can't Hold Us
碰撞后的刺痛:Macklemore%20&%20Ryan%20Lewis%20-%20Can't%20Hold%20Us
在上面的字符串中&,-,'没有变化
我该如何解决这个问题。请给我建议。
【问题讨论】:
标签:
ios
objective-c
ios7
nsstring
【解决方案1】:
试试这个
示例
NSLog(@"%@",[self urlEncodeUsingEncoding:kCFStringEncodingUTF8 WithURLString:@"&-"]);
// 添加特殊字符
- (NSString *)urlEncodeUsingEncoding:(CFStringEncoding)encoding WithURLString:(NSString *)strUrl {
return CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,
( CFStringRef)strUrl,
NULL,
CFSTR("!*'()+$#[]&-"),
encoding));
}
【解决方案2】:
您应该使用 NSNonLossyASCIIStringEncoding 代替 NSUTF8StringEncoding
stringbyaddingpercentescapesusingencoding:NSNonLossyASCIIStringEncoding