gpt4 book ai didi

encoding - ASIHTTPRequest:检测到不正确的 NSStringEncoding 值 0x0000

转载 作者:行者123 更新时间:2023-12-01 14:18:54 27 4
gpt4 key购买 nike

Incorrect NSStringEncoding value 0x0000 detected. Assuming NSStringEncodingASCII. Will stop this compatiblity mapping behavior in the near future.

当我使用 ASIHTTPRequest 时,我不断收到此错误(50% 的次数),这是怎么回事?

我假设我传入的 URL 是正确的,因为它不包含任何空格或奇怪的字符,可能是结果字符串中有一些无法识别的字符?

最佳答案

https://stackoverflow.com/q/8251175/918764 复制我的答案

错误不是您的数据编码不正确,几乎可以肯定您正在从尚未设置编码集的 ASIHTTPRequest 对象请求某种字符串数据 -如果请求无法连接到服务器,或者服务器没有发送可理解的编码 header ,就会发生这种情况。


如果您在返回有效响应并设置请求编码(即无法连接到服务器)之前调用 [asiHttpRequest getResponseString],就会特别发生这种情况。

解决此警告的最简单方法是编辑 ASIHTTPRequest 类,删除 @synthesize responseEncoding 并添加一个简单的自定义 getter/setter,这样您就可以返回默认值如果未设置响应编码,则编码:

- (NSStringEncoding) responseEncoding
{
return responseEncoding || self.defaultResponseEncoding;
}

- (void) setResponseEncoding:(NSStringEncoding)_responseEncoding
{
responseEncoding = _responseEncoding;
}

getResponseString 方法还有一个更具体的解决方法,我认为这是唯一一个使用编码而不检查值的地方——因为编码应该设置为任何非零长度回应:

- (NSString *)responseString
{
NSData *data = [self responseData];
if (!data) {
return nil;
}
// --- INSERT THIS BLOCK ---
// If the 'data' is present but empty, return a simple empty string
if (data.length == 0) {
return @"";
}
//assert(self.responseEncoding); // if you're into runtime asserts, uncomment this
// --- END OF BLOCK TO INSERT ---
return [[[NSString alloc] initWithBytes:[data bytes] length:[data length] encoding:[self responseEncoding]] autorelease];
}

关于encoding - ASIHTTPRequest:检测到不正确的 NSStringEncoding 值 0x0000,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7238432/

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