字符串中的Unicode字符 - iPhone

10

我正在开发一款数学应用程序,需要将指数输出到屏幕上。

我发现这段代码可以正常工作:

NSLog(@"x\u2070 x\u00B9 x\u00B2 x\u00B3 x\u2074 x\u2075 x\u2076 x\u2077 x\u2078 x\u2079");

它显示为:x⁰ x¹ x² x³ x⁴ x⁵ x⁶ x⁷ x⁸ x⁹

这也是有效的:

NSString *testString = @"8.33x10\u00B3";
NSLog(@"test string: %@", testString);

它显示为:test string: 8.33x10³

即使在iPhone屏幕上设置为标签也能正确显示:

NSString *testString = @"8.33x10\u00B3";
Answer1Label.text = testString;

然而,当我从一个.plist文件中获取字符串"8.33x10\u00B3"并在屏幕上显示它时,它只是显示为"8.33x10\u00B3"而不是8.33x10³。

我是否需要在\u00B3前面添加其他字符才能让它被识别?

感谢您的帮助!

1个回答

22

\uXXXX会在编译时转换为Unicode,因此您不应该指望通过读取.plist文件来进行自动转换。

尝试以“文本模式”在Xcode中打开plist文件(右键单击plist文件,选择“打开方式”-> “纯文本文件”),然后使用以下形式的文本编辑所需字符串,使其包含特殊字符:

⁰

使用代码中通常使用的\u2070之类的符号不如使用特殊字符。如果你保存了你的plist文件,关闭它,然后再次双击打开它,你会看到通常的plist编辑器视图,并且它将包含你的特殊字符。

或者,考虑使用OS X的字符查看器(也称为字符画板)直接在Xcode的plist编辑器中输入文本。更多信息


@ObjectiveFlash 我已经通过更多信息澄清了我的回答。 - occulus
@occulus非常感谢您提供的在plist文件中以这种方式编写Unicode的技巧! - sjm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接