不正確NSStringEncoding 0x0000值。假設 NSStringEncodingASCII。將在近期停止 這種兼容性映射行爲。ASIHTTPRequest:不正確NSStringEncoding 0x0000值檢測檢測
當我使用ASIHTTPRequest時,我一直得到這個錯誤(50%的時間),它有什麼問題?
我以爲我傳遞的網址是正確的,因爲它不包含任何空間或性格怪異,也許是有一些無法識別的字符結果字符串?
不正確NSStringEncoding 0x0000值。假設 NSStringEncodingASCII。將在近期停止 這種兼容性映射行爲。ASIHTTPRequest:不正確NSStringEncoding 0x0000值檢測檢測
當我使用ASIHTTPRequest時,我一直得到這個錯誤(50%的時間),它有什麼問題?
我以爲我傳遞的網址是正確的,因爲它不包含任何空間或性格怪異,也許是有一些無法識別的字符結果字符串?
複製我的回答從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];
}
-1:即使這個答案是正確的,你應該鏈接到其他文章用一個簡短的總結而不是整個地複製它。現在總會有這個答案的兩個版本(請注意你對另一個問題的答案已經被編輯)。另外,我相信bradley.ayers的評論是在其他崗位你'setResponseEncoding的內容正確:'方法。 – FreeAsInBeer
我站好了。它看起來好像至少有三份這個答案。 – FreeAsInBeer
如何編輯我的答案以指出另一個問題?你的觀點的關鍵似乎是,這些問題都與相同的基本問題有關;但不作爲重複關閉。不過,我並不認爲我的迴應真的「沒有用」,正如你所指出的那樣。 – rvalue
您是否現在解決了這個問題?檢查我的問題在這裏:http://stackoverflow.com/questions/8136925/iphone-incorrect-nsstringencoding-value-0x0000-detected-using-asihttprequest – Madoc