我有一个本地json文件,其中包含一些应用程序的描述,在解析\u0092
和\u0091
个字符时,我发现了一种奇怪的行为。
当json文件包含这些字符时,相应的已解析NSString
将打印为“?”在UIlabel
它完全消失了。
示例“L \ u2019H \ u00e9r。”显示为“LHér”。而不是“L'Hér。”
如果我将此字符替换为\u2019
,那么我可以在UILabel
有人对此有任何疑问吗?
编辑:目前我将用角色替换他们两个,它也是一个'并且没有问题将它与控制角色混淆。谢谢大家!
答案 0 :(得分:0)
这个答案有点推测,但我希望它能让你走上正轨。
您最好的选择可能是在字符串显示之前放弃并替换\u0091
和\u0092
作为预处理步骤。这些是控制字符,在大多数编码中都是不可打印的。但是:
如果文件的其余部分是正确的UTF,您的json文件可能有问题:编码错误(CP-1250?),而您将文件读取为UTF,转换文件时出现了一些错误,或者类似的问题。因此,另一种解决方案当然是修复您的文件。
如果您不确定文件的编码方式,可能只是在CP-1250中编码 - 因此使用NSWindowsCP1250StringEncoding
阅读文件可能会解决您的问题。
顺便说一句,如果您对字符串@"\u0091"
进行硬编码,您将获得编译时错误 Universal character name refers to a control character
。是的,甚至不是警告,它在Unicode中是无法打印的;)