Как кодировать букву «ï» в юникод «\ u00EF» в target-c? - PullRequest
0 голосов
/ 27 июня 2019

В моем приложении я должен закодировать строку для эмодзи, используя следующий код:

NSData *data = [StrToEncode dataUsingEncoding:NSNonLossyASCIIStringEncoding];
NSString *text = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

Использование кода выше, когда я кодирую ï, затем получаю результат \357, но я хочу Unicode \u00EF.

Введенная строка: -

StrToEncode = "Это мяч"

Токовый выход: -

text = "Этот \ 357s \ 342 шар"

Требуемый вывод: -

text = "Этот шар"

1 Ответ

1 голос
/ 27 июня 2019

Использовать NSUTF8StringEncoding вместо NSNonLossyASCIIStringEncoding

NSData *data = [StrToEncode dataUsingEncoding:NSUTF8StringEncoding];
NSString *text = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

Обновлено: Unicode Str Printing

NSString * a = @"This ïs â ball";
NSMutableString * finalStr = [[NSMutableString alloc] initWithString:@""];
for (int i=0; i<a.length; i++) {
    unichar ch = [a characterAtIndex:i];
    int numVal = (int)ch;

    if (numVal>'z') {
        [finalStr appendString:[NSString stringWithFormat:@"\\u%@",[[NSString stringWithFormat:@"%04x", ch] uppercaseString]]];
    }else{
        [finalStr appendString:[NSString stringWithFormat:@"%c", ch] ];
    }


}
NSLog(@"finalStr %@",finalStr);
...