\ u0092未在UILabel中打印

时间:2014-10-13 10:44:40

标签: ios objective-c unicode uilabel

我有一个本地json文件,其中包含一些应用程序的描述,在解析\u0092\u0091个字符时,我发现了一种奇怪的行为。

当json文件包含这些字符时,相应的已解析NSString将打印为“?”在UIlabel它完全消失了。

示例“L \ u2019H \ u00e9r。”显示为“LHér”。而不是“L'Hér。”

如果我将此字符替换为\u2019,那么我可以在UILabel

中看到该字符

有人对此有任何疑问吗?

编辑:目前我将用角色替换他们两个,它也是一个'并且没有问题将它与控制角色混淆。谢谢大家!

1 个答案:

答案 0 :(得分:0)

这个答案有点推测,但我希望它能让你走上正轨。

您最好的选择可能是在字符串显示之前放弃并替换\u0091\u0092作为预处理步骤。这些是控制字符,在大多数编码中都是不可打印的。但是:

如果文件的其余部分是正确的UTF,您的json文件可能有问题:编码错误(CP-1250?),而您将文件读取为UTF,转换文件时出现了一些错误,或者类似的问题。因此,另一种解决方案当然是修复您的文件。

如果您不确定文件的编码方式,可能只是在CP-1250中编码 - 因此使用NSWindowsCP1250StringEncoding阅读文件可能会解决您的问题。

顺便说一句,如果您对字符串@"\u0091"进行硬编码,您将获得编译时错误 Universal character name refers to a control character。是的,甚至不是警告,它在Unicode中是无法打印的;)