检测到不正确的NSStringEncoding值0x0000。假设 NSStringEncodingASCII。将停止此兼容性映射行为 不久的将来。
当我使用ASIHTTPRequest时,我不断收到此错误(50%的时间),这有什么问题?
我假设我传入的URL是正确的,因为它不包含任何空格或奇怪的字符,也许是结果字符串有一些无法识别的字符?
答案 0 :(得分:0)
从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
方法还有一个更具体的解决方法,我认为这是唯一一个使用编码而不检查值的地方 - 因为编码应该设置为任何非零长度响应:< / p>
- (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];
}