对于objective-c的utf8_decode

时间:2011-10-25 21:39:03

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

  

可能重复:
  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中处理这种转换?

2 个答案:

答案 0 :(得分: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];

答案 1 :(得分:1)

  

我有一个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字符串。但是,你正在显示它或者在你没有向我们展示的另一个步骤中处理它,将你的字符串视为拉丁语-1。