u0092未在UILabel中打印



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

当json文件包含这些字符时,对应的解析NSString会像"?"一样打印出来,而在UIlabel中它会完全消失。

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

如果我用u2019替换这些字符,那么我可以在UILabel 中看到字符

有人知道这件事吗?

编辑:目前我将用字符\u2019替换它们,它也是一个",将其与控制字符混淆是没有问题的。谢谢大家!

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

您最好的选择可能是放弃并用u0091u0092代替其他内容,作为字符串显示前的预处理步骤。这些是控制字符,在大多数编码中是不可打印的。但是:

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

如果你不确定你的文件是如何编码的,它可能只是在CP-1250中编码的——所以使用NSWindowsCP1250StringEncoding读取文件可能会解决你的问题。

顺便说一句,如果你硬编码一个字符串@"u0091",你会得到一个编译时间错误Universal character name refers to a control character。是的,甚至不是一个警告,它在Unicode中太不可打印了;)

最新更新