【发布时间】:2015-02-11 03:46:24
【问题描述】:
我在 UILabel 上显示商标“TM”字符时遇到了一些问题。
出现问题的“TM”字符是 \U0099 而不是通常的 \U2122
我再深入一点,发现“TM”字符\U0099属于极少数的中文字体。
所以我猜 iOS 没有字体可以在标签中显示或根本无法识别它。
我尝试扫描我的数据以查找“\U0099”并将其替换为 \U2122,但似乎 NSString 函数会自动转义 unicode 字符,因此这个“TM”字符甚至不会存在。
以前有没有人遇到过这个问题,或者可以给我建议如何处理这个 \U0099 字符?
提前致谢
【问题讨论】:
-
\U0099不是有效的 Unicode 字符。\U0099来自哪里?为什么没有使用正确的字符? -
来自客户端的数据库。客户位于亚洲,所以我假设他们有很多中文数据。 link 我知道您可以在其他语言的输入法中使用字符的变体。例如“,”和“,”
-
Unicode 是 Unicode,与语言或区域设置无关。
\U2122是 TM 符号的唯一 Unicode 字符。可能是您的客户端使用了一些非 Unicode(或非 UTF)字符编码,导致 TM 符号被编码为十六进制值99,但它不会是\U0099。如果您知道数据的编码方式,您只需使用正确的编码从NSData创建一个NSString。 -
我明白了。有趣的是,整个数据都是 UTF8 格式,其他一切都很好,期待这个 \U0099 字符,所以我不能真正将 NSData 转换为任何其他编码。非常感谢 rmaddy。
-
如果他们使用了错误的字符,那么您需要将
\U0099字符的实例转换为\U2122。展示你到目前为止所做的尝试。
标签: ios objective-c unicode nsstring