【问题标题】:utf8_decode for objective-c [duplicate]用于objective-c的utf8_decode [重复]
【发布时间】:2011-10-25 21:39:02
【问题描述】:

可能重复:
unicode escapes in objective-c

我有一个 LATIN1 字符串。

Artîsté

当我对其进行 json_encode 时,它​​会转义一些字符并将其转换为单字节 UTF8。

Art\u00eest\u00e9

如果我只是 json_decode 它,我相信它是 UTF8 解码

Artîsté

为了取回我的原始字符串,我必须调用 utf8_decode

Artîsté

有没有办法在 Objective-c 中处理这种转换?

【问题讨论】:

  • json_encode、json_decode 和 utf8_decode 到底是什么?你实现的功能/方法?您正在使用的某个库?

标签: objective-c utf-8 utf8-decode


【解决方案1】:

您可能正在寻找这个:

NSString *string = (some string with non-ASCII characters in it);
char const *string_as_latin1 = [string cStringUsingEncoding:NSISOLatin1StringEncoding];

或者可能是这样的:

NSData *data_latin1 = [string dataUsingEncoding:NSISOLatin1StringEncoding allowLossyConversion:YES];

【讨论】:

  • 如果我的代码没有错,您的解决方案会正常工作。我正在尝试的一切都是在编码中使用混乱的字符。它应该返回 Art\u00eest\u00e9 但幕后的东西正在改变我的输入字符串,结果是 Art\u00c3\u00aest\u00c3\u00a9 所以我试图解码错误的字符串。
【解决方案2】:

我有一个 LATIN1 字符串。

我认为你不会。假设您在谈论 PHP,json_encode() 只接受 UTF-8 字符串,如果遇到非 UTF-8 高字节序列则退出:

json_encode("Art\xeest\xe9")
"Art"
json_encode("Art\xc3\xaest\xc3\xa9")
"Art\u00eest\u00e9"

我认为您有一个正确的 UTF-8 字符串开始,然后您对其进行编码和解码以获得完全相同的 UTF-8 字符串。但随后您在另一个未向我们展示的步骤中显示或处理它,将您的字符串视为 Latin-1。

【讨论】:

  • 我想你就在那里。有一段代码将其转换为utf8,我忘了它在那里......
猜你喜欢
  • 2011-10-02
  • 1970-01-01
  • 2010-12-08
  • 1970-01-01
  • 1970-01-01
  • 2011-06-14
  • 2023-04-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多