我有一个 LATIN1 字符串。
Artîsté
当我对其进行 json_encode 编码时,它会转义一些字符并将其转换为单字节 UTF8。
Art\u00eest\u00e9
如果我只是 json_decode 它,我相信它是 UTF8 解码
Artîsté
为了取回我的原始字符串,我必须调用 utf8_decode
Artîsté
有没有办法在objective-c中处理这种转换?
我有一个 LATIN1 字符串。
Artîsté
当我对其进行 json_encode 编码时,它会转义一些字符并将其转换为单字节 UTF8。
Art\u00eest\u00e9
如果我只是 json_decode 它,我相信它是 UTF8 解码
Artîsté
为了取回我的原始字符串,我必须调用 utf8_decode
Artîsté
有没有办法在objective-c中处理这种转换?
你可能正在寻找这个:
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];
我有一个 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。