我在将字符串转换为可读的内容时遇到问题。我在用着
NSString *substring = [NSString stringWithUTF8String:[symbol.data cStringUsingEncoding:NSUTF8StringEncoding]];
但我无法将 \U7ab6\U51b1 转换为 '
它显示为“这是我不想要的,它应该显示为”。谁能帮我?
它显示为 '
那是字符 U+2019 右单引号。
发生的事情是你已经有了字符序列’s
以 UTF-8 编码提交给您,以字节形式显示:
’ s
E2 80 99 73
然后,该字节序列被错误地解释为好像是用 Windows 代码页 932(日语;或多或少的 Shift-JIS)编码的:
E2 80 99 73
窶 冱
因此,在这种特殊情况下,您可以恢复’s
首先将字符编码为 cp932 字节,然后使用 UTF-8 将这些字节解码回字符。
但是,这并不能解决您真正的问题,即字符串首先被错误地读取。你得到了窶冱
在这种情况下,因为编码产生的 UTF-8 字节序列’s
碰巧也是一个有效的 Shift-JIS 字节序列。但对于您可能获得的所有可能的 UTF-8 字节序列而言,情况并非如此。许多其他角色将受到不可挽回的伤害。
您需要找到字节被读入系统并解码为 Shift-JIS 的位置,并修复它以使用 UTF-8 代替。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)