如何解码 \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:
并使用结果。可能有比这一个更奇怪的组合。
我正在从服务器获取长文本并且该文本包含字符 \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:
并使用结果。可能有比这一个更奇怪的组合。