Подтвердить что ты не робот

"неполное универсальное имя символа" со строкойWithUTF8String

когда я пытаюсь преобразовать форму utf-8 в NSString так:

NSString *s = [NSString stringWithUTF8String:"\U0627\U0644\U0641\U0631\U0646"];
NSLog(@"%@", s);

я получаю ошибку компиляции:

incomplete universal character name

Заметьте, что это когда-то просто отлично работает:

NSString *UAE = [NSString stringWithUTF8String:"\U0627\U0644\U0641\U0631\U0646"];
    NSLog(@"%@", UAE);

и вывод:

الامارات

так почему это происходит? пожалуйста, помогите.

4b9b3361

Ответ 1

\ U и \u - не одно и то же. \U escape ожидает 8 (шестнадцатеричных) цифр вместо 4.

Это должно работать:

NSString *s = [NSString stringWithUTF8String:"\u0627\u0644\u0641\u0631\u0646"];

Ответ 2

Неполное универсальное имя символа означает, что вам не хватает части одного из символов utf8, который вы пытаетесь записать.

UTF8 охватывает от 1 байтовых символов до 4 байтовых символов, возможно, один из них длиннее, чем вы написали, и вам не хватает 1 байт или такой..