我正在尝试解码从 URLEncoded 的服务器发送的一些文本,这是我设法找到的最佳方法。
我将这些标准函数用于 URLEncododing:
NSString* encodeToPercentEscapeString(NSString *string) {
return (__bridge NSString *)
CFURLCreateStringByAddingPercentEscapes(NULL,
(__bridge CFStringRef) string,
NULL,
(CFStringRef) @"!*'();:@&=+$,/?%#[]",
kCFStringEncodingUTF8);
}
NSString* decodeFromPercentEscapeString(NSString *string) {
return (__bridge NSString *)
CFURLCreateStringByReplacingPercentEscapesUsingEncoding(NULL,
(__bridge CFStringRef) string,
CFSTR(""),
kCFStringEncodingUTF8);
}
如果我对特殊字符进行编码:
NSString* encoded = encodeToPercentEscapeString(@"ąśżźćęółń");
我得到@"%C4%85%C5%9B%C5%BC%C5%BA%C4%87%C4%99%C3%B3%C5%82%C5%84"
没关系。
但如果我尝试解码它:
NSString* original = decodeFromPercentEscapeString(encoded);
我得到:@“ńÖŇõŇľŇļńáńô√≥ŇāŇĄ”。
为什么?
有没有更好的方法来解码 URLEncoded 文本?