0

可能重复:
objective-c 中的 unicode 转义

我有一个 LATIN1 字符串。

Artîsté

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

Art\u00eest\u00e9

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

Artîsté

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

Artîsté

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

4

2 回答 2

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];
于 2011-10-25T21:53:32.770 回答
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 字符串。但是随后您在另一个未向我们展示的步骤中显示或处理它,它将您的字符串视为 Latin-1。

于 2011-10-25T21:54:07.280 回答