Вот проблема, которая у меня есть.Программа на iPhone должна синхронизироваться с сервером, который также синхронизируется с веб-версией сервиса.Веб-сервис отправляет специальные символы в строках на сервер в HTML-кодах (& # amp ;, & # quote ;, № и т. Д.).Мне нужно отобразить эти данные, поэтому мне нужно преобразовать эти символы во что-то, что xcode мог бы декодировать и рисовать.Как я обнаружил, коды в конце HTML в Юникоде одинаковы, различия только в формате (например, № в HTML - это \ u8470 в Юникоде).Я попытался просто изменить этот формат в строках и закодировать его как UTF8.В результате теперь у меня есть функция:
+(NSString *) replaceHTMLCodes:(NSString *)text{
NSLog(@"replacing HTML codes");
if (text){
NSLog(@"%@", text);
NSString *tmpString=[NSString stringWithString:text];
tmpString = [text copy];
NSString *tmpText = @"";
int locAmp = [tmpString rangeOfString:@"&#"].location;
NSString * Code = @"";
int locComa;
while (locAmp!=NSNotFound) {
tmpText = [tmpText stringByAppendingString:[tmpString substringToIndex:locAmp]];
tmpString = [tmpString stringByReplacingCharactersInRange:NSMakeRange(0, locAmp) withString:@""];
locComa = [tmpString rangeOfString:@";"].location;
Code = [NSString stringWithString:[tmpString substringWithRange:NSMakeRange(0, locComa)]];
Code = [Code stringByReplacingOccurrencesOfString:@"&#" withString:@"\\u"];
NSLog(@"%@", Code);
tmpString = [tmpString stringByReplacingCharactersInRange:NSMakeRange(0, locComa+1) withString:@""];
tmpText = [tmpText stringByAppendingFormat:@"%C", Code];
locAmp = [tmpString rangeOfString:@"&#"].location;
}
tmpText = [tmpText stringByAppendingString:tmpString];
NSLog(@"%@", tmpText);
return tmpText;
}
else
return text;
}
Но она не работает правильно - она отображает случайные символы Юникода вместо того, что я хочу.Я пытался использовать NSUTF8StringEncoding, но это тоже не помогло.
Есть идеи, как решить эту проблему?Я прав с преобразованием кодов?