我们在Localization.string文件中有键值对。
"spanish-key" = "Espa\u00f1ol";
当我们获取并分配给标签时,应用程序会将其显示为“Espau00f1ol”。
不起作用。
self.label1.text= NSLocalizedString(@"spanish-key", nil);
它以所需格式显示。
self.label1.text= @"Espa\u00f1ol";
当我们使用
时,这可能是什么问题NSLocalizedString(@"spanish-key", nil)?
如果我们设置\ U而不是\ u,那么它可以正常工作。
"spanish-key" = "Espa\U00f1ol";
何时使用“\ Uxxxx”和“\ uxxxx”?
答案 0 :(得分:30)
NSString
文字和字符串文件使用不同的转义规则。
NSString
文字使用与" normal"相同的转义序列。特别是C字符串
"通用角色名称"在C99标准中定义:
\unnnn - the character whose four-digit short identifier is nnnn
\Unnnnnnnn - the character whose eight-digit short identifier is nnnnnnnn
示例:
NSString *string = @"Espa\u00F1ol - \U0001F600"; // Español -
另一方面,字符串文件使用\Unnnn
来表示UTF-16字符,
和" UTF-16代理对"对于字符> U + FFFF:
"spanish-key" = "Espa\U00f1ol - \Ud83d\Ude00";
(这是"旧式属性列表"中使用的转义,您可以在打印时看到 `NSDictionary的描述。)
这(希望)回答你的问题
何时使用" \ Uxxxx"和" \ uxxxx"?
但是: 正如@ gnasher729在他的回答中所指出的那样,没有必要使用Unicode
完全逃脱序列。您只需插入Unicode字符本身,
在NSString
文字和字符串文件中都有:
NSString *string = @"Español - ";
"spanish-key" = "Español - ";
答案 1 :(得分:2)
只需在Localization.string中以正确的Unicode编写字符串即可。
"spanish-key" = "Español";