最近在做的一個項目中有一個功能是有一個網頁,模擬http請求獲取到這個網頁返回的相應的數據。
在請求完成后獲取到的數據為NSData類型,按照我們通常的轉換為NSString的方法:
NSString *str = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
但是發現轉換后的str是nil。
一開始以為獲取到的data為空,可是再三確認后發現data確實有數據,之后嘗試了各種轉換方法都不起作用。
后來經過查詢原來那個網頁的編碼格式為gb2312,通常的轉換方法不行。
所以需要另外的編碼格式進行轉化,方法為:
NSStringEncoding encoding = CFStringConvertEncodingToNSStringEncoding (kCFStringEncodingGB_18030_2000);
NSString *str = [[NSString alloc] initWithData:responseData encoding:encoding];
這樣就可以正確的進行NSString的轉換。
其實還是自己對編碼格式不熟悉才走了很多的彎路。
新聞熱點
疑難解答