我目前正在努力处理iOS上转义特殊字符的百分比,例如包含在查询参数值中时的“é”。在iOS上转义特殊字符(如é)的百分比
我正在使用AFNetworking,但问题不是特定于它。
“é”字符应该百分比转义为“%E9”,但结果为“%C3%A9”。原因是因为“é”在UTF8中表示为2个字节。
实际百分比转义方法是众所周知的方法,我传递UTF8作为字符串编码。字符串本身是@“é”。
static NSString * AFPercentEscapedQueryStringPairMemberFromStringWithEncoding(NSString *string, NSStringEncoding encoding)
{
static NSString * const kAFCharactersToBeEscaped = @":/?&=;[email protected]#$()~";
static NSString * const kAFCharactersToLeaveUnescaped = @"[].";
return (__bridge_transfer NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (__bridge CFStringRef)string, (__bridge CFStringRef)kAFCharactersToLeaveUnescaped, (__bridge CFStringRef)kAFCharactersToBeEscaped, CFStringConvertNSStringEncodingToEncoding(encoding));
}
我希望通过UTF16字符串编码将解决它,但它不。结果是“%FF%FE%E9%00”,在这种情况下,它包含“%E9”,但我必须缺少一些明显的东西。
不知怎的,我无法绕过它。 任何指针都会很棒。