如何解码 \U201a\U00c4\U00f2\U201a\U00c4\U00f4 这个?

How to decode \U201a\U00c4\U00f2\U201a\U00c4\U00f4 this?

我正在从服务器获取长文本并且该文本包含字符 \U201a\U00c4\U00f2He-Must-Not-Be-Named\U201a\U00c4\U00f4。

当我在 textView 中显示文本时,出现了一些不同的字符... 如何在 objective c 中获取正常文本??? 请帮我解决这个问题

当我从我使用的服务器接收数据时

 infoDictionary = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil]; 

然后从那个 infoDictionary 中我得到了像

这样的文本

一眨眼就把他的堂兄达德利关在snake\U201a\U00c4\U00f4s囚禁中。每根魔杖都有一个魔法核心,例如 phoenix\U201a\U00c4\U00f4s 头发或龙心弦,可以执行所有魔法。 \n

然后我将此值分配给 textView,如

 detailsTextView.text = [infoDictionary objectForKey:@"DESCRIPTION"];

但是在 textView 中我得到了一些不同的字符..

stringWithUTF8String: takes const char* as an argument, so no "@" symbol in the front.

NSString *description = [infoDictionary objectForKey:@"DESCRIPTION"];
NSString *str = [NSString stringWithUTF8String:description.UTF8String];

 detailsTextView.text = str;

在您的文本视图中显示此 str

有两种可能,一种可能性大,一种可能性小。

不太可能是您的服务器在尝试将其数据转换为 JSON 时发送垃圾信息。

更有可能的是你只是在吓唬自己,并没有错。 \U201a\U00c4\U00f2He-Must-Not-Be-Named\U201a\U00c4\U00f4 之类的东西正是非 ASCII 字符在 UTF-8 中的编码方式。例如,U201A 是 Unicode 字符 "Single Low-9 Quotation Mark"。如果您好奇的话,可以使用 MacOS X 中的字符查看器来找出这些字符是什么。如果你使用 NSLog,你也会得到同样奇怪的字符。它们应该完美地显示在您的文本视图中。

但是,在您的情况下,序列 \U00c4\U00f2\U00c4\U00f4 似乎非常不寻常。这似乎是服务器代码或存储的实际数据的问题。如果给您的是垃圾数据,您将无能为力。它也不是由服务器上的典型愚蠢错误之一创建的(存储 MacRoman 字符,或采用 UTF-8 并假设字节是代码点)。您唯一能做的就是联系提供此数据的任何人。

现在您可以做点什么了。您可以使用方法 stringByReplacingOccurencesOfString: 将无意义的数据替换为合理的数据。我不希望序列 \U201a\U00c4\U00f4s = ‚Äôever 出现在我显示的字符串中。所以弄清楚那里属于什么字符串(比如引号)并替换它。因此,将描述放入 NSString,使用 stringByReplacingOccurencesOfString: 并使用结果。可能有比这一个更奇怪的组合。