2013-01-22 127 views
4

我知道這已經被問過很久了,我已經遵循了幾種方法,但他們不工作。如何將NSData轉換爲NSString

以下是我已經嘗試過:

NSString *newStr = [NSString stringWithUTF8String:[responseData bytes]]; 
NSString *newStr = [NSString stringWithFormat:@"%.*s", [responseData length], [responseData bytes]]; 

他們沒有工作。在第一種情況下,它用null填充newStr。在第二,它填充垃圾字符。我從調試器日誌(po responseData)知道我得到的有效響應就像是bbbbbb 00 bbbbbb。 [服務器將它們作爲字節數組發送]

怎麼辦?

編輯: 我從http請求響應接收這些數據 - 使用ASIHTTPRequest庫,以防有人可以幫助該行。

+0

試試這個http://stackoverflow.com/questions/2467844/convert-utf-8-encoded-nsdata-to-nsstring –

+0

我已經嘗試過被描繪那裏的解決方案,上面也提到過。 –

+1

你檢查你的NSData是否爲空? –

回答

3

我張貼這種用於記錄的緣故,因爲我發現了一個duplicate並投票結束。

實際上,我收到的是以十六進制表示的字節流,並且所有指示的答案都不起作用。只有[NSData描述]給了我真實的數據,這是我無法使用的,因爲它是用於調試的。

最後我嘗試瞭解決方案here,我得到了我想要的。 感謝所有人的努力幫助。

2

請嘗試以下代碼

NSString *string = [[[NSString alloc] initWithData: responseData.bytes encoding:NSUTF8StringEncoding] autorelease]; 
+2

返回null :-( –

3

您可以使用此代碼行

NSString *str=[[NSString alloc] initWithBytes:data1.bytes length:data1.length encoding:NSUTF8StringEncoding]; 
+2

這個也是空的 –

+0

你的數據是什麼?我從工作項目中得到這個字符串,並且它的工作很好。可能你的數據編碼不是UTF8嗎? – aknew

+0

請閱讀我自己的答案 –

10

試試這個,

NSData *responseData; [Initialize it] 
NSString *receivedDataString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding]; 
NSLog(@"%@",receivedDataString); 
1
NSString *image1Data = [[NSData dataWithData:myData] encodeBase64ForData]; 

但是爲此,您必須使用NSData + Base64Additions類。

0

使用以下方式

NSString *dC_Str = [[NSString alloc] initWithData:decryPtd_data encoding:NSASCIIStringEncoding] ;