gpt4 book ai didi

ios - 尝试解析未知编码的 POST 响应

转载 作者:行者123 更新时间:2023-11-29 00:10:36 25 4
gpt4 key购买 nike

我正在尝试使用以下内容解析来自发布请求的响应:

// PERFORM REQUEST
NSURLSessionDataTask *postDataTask = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {

// GET RESPONSE STRING
responseStr = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];

// SIGNAL DONE
dispatch_semaphore_signal(sema);

}];

我一直遇到特殊字符的问题,例如 À È Ì Ò Ù 返回错误。有没有办法确定数据的正确编码?或者用可以正确解释这些字符的东西来解码数据?

最佳答案

如果你有元音符号,NSASCIIStringEncoding 肯定是错误的编码,因为这意味着原始的 7 位 ASCII,并且对于值 > 127 的任何字节都会失败。

没有通用的方法来确定文本的编码。根据您正在下载的数据,可能会有启发式方法。例如。如果您知道包含在所有包含国际字符的响应中的字符串,您可以将该字节序列与各种编码中的相同字节序列进行比较。或者有些库包含有关某些字节序列频率的统计信息,以检测文本是什么语言和编码,但这些库很可能会猜错。

您已经在评论中说过没有 header 指示编码,这将是一种替代解决方案。

除此之外,您只能查看正在与之通信的任何服务器的规范,并对那里给定的编码进行硬编码。或者,如果没有,请尝试不同的编码,直到一种有效。

目前最常见的编码是 UTF8 和 Windows Latin 1。如果您要等到很久以后才能知道(例如解析 JSON 响应),我建议使用 0...255 中任意值的编码有效(如 Windows Latin 或无损 ASCII),并在检查数据后再次转换。

关于ios - 尝试解析未知编码的 POST 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46590057/

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