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

时间:2010-03-26 10:13:43

标签: objective-c iphone cocoa-touch utf-8

当我尝试将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);

和输出:

الامارات

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

2 个答案:

答案 0 :(得分:37)

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

这应该有效:

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

答案 1 :(得分:0)

不完整的通用字符名称表示您缺少您尝试编写的utf8字符之一的部分内容。

UTF8从1个字节的符号跨越到4个字节的符号,可能你的一个符号比你写的要长,你丢失了1个字节等等。