Ответ 1
\ U и \u - не одно и то же. \U escape ожидает 8 (шестнадцатеричных) цифр вместо 4.
Это должно работать:
NSString *s = [NSString stringWithUTF8String:"\u0627\u0644\u0641\u0631\u0646"];
когда я пытаюсь преобразовать форму 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);
и вывод:
الامارات
так почему это происходит? пожалуйста, помогите.
\ U и \u - не одно и то же. \U escape ожидает 8 (шестнадцатеричных) цифр вместо 4.
Это должно работать:
NSString *s = [NSString stringWithUTF8String:"\u0627\u0644\u0641\u0631\u0646"];
Неполное универсальное имя символа означает, что вам не хватает части одного из символов utf8, который вы пытаетесь записать.
UTF8 охватывает от 1 байтовых символов до 4 байтовых символов, возможно, один из них длиннее, чем вы написали, и вам не хватает 1 байт или такой..