当我尝试将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);
和输出:
الامارات
那为什么会这样呢?请帮忙。
答案 0 :(得分:37)
\ U和\ u不是一回事。 \ U转义需要8(十六进制)数字而不是4。
这应该有效:
NSString *s = [NSString stringWithUTF8String:"\u0627\u0644\u0641\u0631\u0646"];
答案 1 :(得分:0)
不完整的通用字符名称表示您缺少您尝试编写的utf8字符之一的部分内容。
UTF8从1个字节的符号跨越到4个字节的符号,可能你的一个符号比你写的要长,你丢失了1个字节等等。