【问题标题】:unicode escapes in objective-cObjective-C中的Unicode转义
【发布时间】:2011-12-15 04:26:31
【问题描述】:

我有一个字符串“Artîsté”。我在它上面使用了 PHP 的 json_encode,我得到了“Art\u00eest\u00e9”。

如何将其转换为 NSString?我尝试了很多东西,但都没有奏效,我总是最终得到 Artésté

For Example:
NSString stringWithUTF8String:"Art\u00c3\u00aest\u00c3\u00a9"];//Artîsté
@"Art\u00c3\u00aest\u00c3\u00a9"; //Artîsté

【问题讨论】:

  • 但是你需要它们作为文字还是动态的?因为文字可以包含未转义的 UTF,在 OSX 上没有任何问题。
  • 动态。我创建了一个 NSURLConnection,返回的结果是 json_encode("Artîsté") 的结果,即 "Art\u00c3\u00aest\u00c3\u00a9"
  • 使用通用 JSON 解析器来解码 JSON 数据,包括字符串。 NSStringEncodingNonLossyASCII 与 JSON 字符串文字语法非常相似,但不是 100% 相同。

标签: objective-c unicode


【解决方案1】:

问题是你的输入字符串:

"Art\u00c3\u00aest\u00c3\u00a9"

实际上的字面意思是“Artîsté”。 \u00c3 是'Ã',\u00ae 是'®',\u00a9 是'©'。

生成输入字符串的内容是接收 UTF-8 输入但期待其他内容(例如,cp1252、ISO-8859-1 或 ISO-8859-15)

【讨论】:

    【解决方案2】:

    您可以使用CFStringCreateFromExternalRepresentationkCFStringEncodingNonLossyASCII 编码来解析\uXXXX 转义序列。在这里查看我的答案:

    Converting escaped UTF8 characters back to their original form

    【讨论】:

    • 好信息谢谢。我仍然收到错误的信息 Artîsty©。我将假设 php json_encode 方面有问题,因为 echo json_decode(json_encode("Artîsté"));也给了我Artîsty©。谢谢。
    • "Art\u00eest\u00e9"Artîsté 的正确 JSON 或 Java 字符串文字; "Art\u00c3\u00aest\u00c3\u00a9" 不是。您也可能在显示最终结果时遇到问题?
    猜你喜欢
    • 1970-01-01
    • 2012-04-24
    • 1970-01-01
    • 2010-10-14
    • 1970-01-01
    • 1970-01-01
    • 2020-11-06
    • 1970-01-01
    相关资源
    最近更新 更多