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