gpt4 book ai didi

ios - Xcode - UTF-8 字符串编码

转载 作者:行者123 更新时间:2023-11-29 10:46:33 24 4
gpt4 key购买 nike

我在编码我的 String

时遇到一个奇怪的问题

例如:

NSString *str = @"\u0e09\u0e31\u0e19\u0e23\u0e31\u0e01\u0e04\u0e38\u0e13";
NSString *utf = [str stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSLog("utf: %@", utf);

这在日志中完美运行

utf: ฉันรักคุณ

但是,当我尝试使用我从具有相同字符串的 JSON 解析的字符串时:

//str is string parse from JSON
NSString *str = [spaces stringByReplacingOccurrencesOfString:@"U" withString:@"u"];
NSLog("str: %@, str);
NSString *utf = [str stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSLog("utf: %@", utf);

这在日志中不起作用

str: \u0e09\u0e31\u0e19\u0e23\u0e31\u0e01\u0e04\u0e38\u0e13
utf: \u0e09\u0e31\u0e19\u0e23\u0e31\u0e01\u0e04\u0e38\u0e13

我已经找了几个小时的答案,但仍然没有头绪

任何人都将不胜感激!谢谢!

最佳答案

JSON 返回的字符串实际上是不同的 - 它包含转义的反斜杠(对于打印出 JSON 字符串时看到的每个“\”,它实际包含的是 @"\")。

相比之下,您手动创建的字符串从一开始就已经包含“ฉันรักคุณ”。您不插入反斜杠字符 - 相反,@"\u0e09"(等)是单个代码点。

你可以替换这一行

NSString *utf = [str stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

用这条线

NSString *utf = str;

并且您的示例输出不会改变。 stringByReplacingPercentEscapesUsingEncoding: 指的是另一种转义。 See here about percent encoding .

您实际需要做的是解析字符串以获取 unicode 代码点的字符串表示形式。这是一个潜在解决方案的链接:Using Objective C/Cocoa to unescape unicode characters .但是,我建议您检查一下您正在使用的 JSON 库(如果您正在使用一个)——它们可能会提供一些方法来透明地为您处理这个问题。例如。 JSONkit

关于ios - Xcode - UTF-8 字符串编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22168540/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com