gpt4 book ai didi

objective-c - iOS NSString stringWithUTF8String/NSString initWithCString 错误utf8解码

转载 作者:太空宇宙 更新时间:2023-11-04 08:39:11 24 4
gpt4 key购买 nike

我正在读取一个二进制文件,里面有一些文本字段。

原字段值为"asdf è"(无法更改二进制文件编码)

UTF-8 编码为 "asdf\xc3\xa8"

我读的是 "asdf\xc3\x83\xc2\xa8" 所以 NSString stringWithUTF8String:initWithCString 方法给我 "asdf ¨"

如何取回正确的"asdfè"值?

谢谢

最佳答案

你从二进制文件中读取的确实是一种奇怪的“编码”。

  • C3 A8U+00C3 ("Ã") 的 UTF-8 序列
  • C2 A8 它是 U+00A8 ("¨") 的 UTF-8 序列
  • 这些Unicodes C3 A8的低字节是U+00E8的UTF-8序列(“è”)

以下“技巧”使用 ISO Latin 1 编码来转换字符U+00C3 U+00A8到字节C3 A8:

char *s = "\xc3\x83\xc2\xa8";
NSString *s1 = [[NSString alloc] initWithBytes:s length:strlen(s) encoding:NSUTF8StringEncoding];
NSLog(@"%@", s1); // è
NSData *d = [s1 dataUsingEncoding:NSISOLatin1StringEncoding];
NSLog(@"%@", d); // <c3a8>
NSString *s2 = [[NSString alloc] initWithData:d encoding:NSUTF8StringEncoding];
NSLog(@"%@", s2); // è

关于objective-c - iOS NSString stringWithUTF8String/NSString initWithCString 错误utf8解码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24554795/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com