iOS:NSASCIIStringEncoding不';t对某些字符进行正确编码

iOS:NSASCIIStringEncoding不';t对某些字符进行正确编码,ios,objective-c,request,Ios,Objective C,Request,我有一个要从中请求数据的url。这是代码 urlStr = [urlStr stringByAddingPercentEscapesUsingEncoding: NSASCIIStringEncoding]; ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:urlStr]]; 除非我有某些字符,如ş,否则此选项有效。urlstr将返回null。有没有办法避免某些字

我有一个要从中请求数据的url。这是代码

 urlStr = [urlStr stringByAddingPercentEscapesUsingEncoding:
 NSASCIIStringEncoding];

 ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:urlStr]];

除非我有某些字符,如
ş
,否则此选项有效。urlstr将返回null。有没有办法避免某些字符类型?任何提示或建议都将不胜感激。

我在许多应用中成功地使用了以下方法:

- (NSString *)urlEncode:(NSString *)str {
    return (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(NULL, (CFStringRef)str, NULL, CFSTR("!*'();:@&=+$,/?%#[]"), kCFStringEncodingUTF8));
}
请注意,我仅在URL的参数上使用此选项,因此以下选项将起作用(注意,我添加了ş,这似乎起作用,尽管我不熟悉该字符):

这将产生以下结果:


ASCII只能处理1-127范围内的Unicode字符<代码>ş不是ASCII字符。它是“除”而不是“接受”。Grr@Mathew很抱歉这是我愚蠢的错误。这基本上是Google在Mac代码的Google工具箱中使用的方法,所以我认为它是有效的。看见
NSString *baseURL = @"http://www.google.com";
NSString *paramsString = @"testKey=test value_with some (weirdness)!___ş";
NSString *resultingURLString = [NSString stringWithFormat:@"%@?%@", baseURL, [self urlEncode:paramsString]];