我的程序与其他国家的服务器交互,并且经常需要处理包含外来字符的 URL。在我们考虑斯堪的纳维亚字符(例如æ
,ø
和å
. 当我收到一个 URL 时,我将其解码如下:
-(NSString*)urlDECODE:(NSString*)string
{
NSString* s = [string stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
return (s)?s:string;
}
但是,这无法正确解码这些字符:
filename: æøåa.rtf
input: %C3%83%C2%A6%C3%83%C2%B8a%C3%8C%C2%8Aa.rtf
output: æøaÌa.rtf
编辑:这是编码功能:
NSString * URLEncode(NSString * url)
{
NSString* out = nil;
@try
{
NSLog(@"BEFORE=%@",url);
out = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSLog(@"AFTER=%@",out);
}
@catch (NSException * e)
{
NSLog(@"Encoding error: %@", e);
}
return out;
}