iOS:NSASCIIStringEncoding不能正确编码某些字符

时间:2014-09-05 20:46:25

标签: ios objective-c request

我有网址要求我提供数据。这是代码。

 urlStr = [urlStr stringByAddingPercentEscapesUsingEncoding:
 NSASCIIStringEncoding];

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

除非我有某些字符,例如ş,否则此方法有效。 urlstr将返回null。除了某些字符类型之外,有没有办法解决这个问题?任何提示或建议都表示赞赏。

1 个答案:

答案 0 :(得分:1)

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

- (NSString *)urlEncode:(NSString *)str {
    return (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(NULL, (CFStringRef)str, NULL, CFSTR("!*'();:@&=+$,/?%#[]"), kCFStringEncodingUTF8));
}

请注意,我只在 URL的params上使用它,所以以下方法可行(注意我添加了ş,它似乎有用,虽然我不熟悉那个字符) :

NSString *baseURL = @"http://www.google.com";
NSString *paramsString = @"testKey=test value_with some (weirdness)!___ş";
NSString *resultingURLString = [NSString stringWithFormat:@"%@?%@", baseURL, [self urlEncode:paramsString]];

产生结果:

  

http://www.google.com?testKey%3Dtest%20value_with%20some%20%28weirdness%29%21___%C5%9F