Моя программа взаимодействует с серверами в других странах и регулярно обрабатывает 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
EDIT: Это функция кодирования:
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;
}
Как вы генерируете выходные сообщения? – sergio
вы пробовали с 'NSISOLatin1StringEncoding'. – rishi
Кроме того, вы уверены, что вход (переменная 'string') верен? – Monolo