带有stringWithUTF8String的"不完整的通用字符名称"

Nas*_*ser 21 iphone cocoa-touch objective-c utf-8

当我尝试将utf-8字符串转换为NSString时,如下所示:

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

我得到编译错误:

incomplete universal character name
Run Code Online (Sandbox Code Playgroud)

请注意,它有时正常工作:

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

和输出:

????????
Run Code Online (Sandbox Code Playgroud)

那为什么会这样呢?请帮忙.

Dav*_*har 37

你和你不是一回事.\ U转义需要8(十六进制)数字而不是4.

这应该工作:

NSString *s = [NSString stringWithUTF8String:"\u0627\u0644\u0641\u0631\u0646"];
Run Code Online (Sandbox Code Playgroud)

  • 在记录UI测试的事件时,Apple实际上会出现此错误.(至少从Xcode 7.3开始) (2认同)

Jac*_*ack 0

不完整的通用字符名称意味着您缺少要编写的 utf8 字符之一的一部分。

UTF8 的范围从 1 字节符号到 4 字节符号,可能你的一个比你写的更长,并且你丢失了 1 字节或类似的东西。