带有 stringWithUTF8String 的“不完整的通用字符名称”
Posted
技术标签:
【中文标题】带有 stringWithUTF8String 的“不完整的通用字符名称”【英文标题】:"incomplete universal character name" with stringWithUTF8String 【发布时间】:2010-03-26 10:13:43 【问题描述】:当我尝试将表单 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);
和输出:
الامارات
那为什么会这样呢?请帮忙。
【问题讨论】:
天啊,这是 Xcode 中的一个错误。对于某些国家/地区来说,非 ASCII 仍然很难获得 ;-) 【参考方案1】:\U 和 \u 不是一回事。 \U 转义需要 8 个(十六进制)数字而不是 4 个。
这应该可行:
NSString *s = [NSString stringWithUTF8String:"\u0627\u0644\u0641\u0631\u0646"];
【讨论】:
Apple 在为 UI 测试记录事件时实际上会出现此错误。 (至少从 Xcode 7.3 开始)【参考方案2】:不完整的通用字符名称意味着您缺少您尝试编写的 utf8 字符之一。
UTF8 跨越从 1 字节符号到 4 字节符号,可能您的其中一个符号比您写的要长,并且您缺少 1 个字节或这样的..
【讨论】:
非常感谢 Jack,但是,我试图从我无法控制的 Web 服务中解析 UTF-8 字符串。 utf-8 字符串中的空格是否与问题有关。我的意思是在我的情况下如何表示空格字符?再次感谢 如果字符串来自 web 服务,你是如何得到编译时错误的? 实际上我从返回的字典中手动复制了 utf-8 字符串并使用方法 -stringWithUTF8String 对其进行测试,这是我得到编译时错误的时候以上是关于带有 stringWithUTF8String 的“不完整的通用字符名称”的主要内容,如果未能解决你的问题,请参考以下文章