检测到
不正确的NSStringEncoding值0x0000。假设是NSStringEncodingASCII。将在不久的将来停止这种兼容映射行为。
当我使用ASIHTTPRequest时,我不断地得到这个错误(50%的次数),它有什么问题吗?
我假设我传入的URL是正确的,因为它不包含任何空格或奇怪的字符,可能是结果字符串有一些无法识别的字符?
发布于 2011-11-24 01:31:47
从https://stackoverflow.com/q/8251175/918764复制我的答案
错误并不是您的数据没有正确编码,而是几乎可以肯定的是,您从一个还没有编码集的ASIHTTPRequest对象中请求某种字符串数据--如果请求未能连接到服务器,或者如果服务器没有发送一个可以理解的编码头,就会发生这种情况。
如果在返回有效响应并设置了请求编码(即无法连接到服务器)之前调用[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];
}https://stackoverflow.com/questions/7238432
复制相似问题