我在作爲響應HTTP Post的一部分而獲得的字符串中間出現空字符。因此,即使字符串中有更多數據,內容也只能打印到空字符。下面是說明問題的示例代碼由於字符串中間的空字符,NSString內容被截斷
NSString *testString= @"v1db1���������¿¿sssss"; ->this line shows the null character warning
NSInteger stringlength = [testString length];
NSLog(@"String Length:%ld",stringlength);
NSLog(@"String Value:%@",testString);
注意:測試字符串包含帶問號的空字符。出於某種原因,我無法保存帖子,如果我複製確切的字符串。
第一行在Xcode中顯示警告「保留在字符串文字中的空字符」。
這個程序的輸出是
String Length:21
String Value:v1db1
什麼是解決這個問題的正確途徑?我正在考慮掃描NSString的空字符並刪除它。什麼可能是我得到空字符的原因?
您如何在代碼中從HTTP Post響應中獲取NSString?這很可能是你的問題的根源,你不應該首先創建一個帶有null的NSString。 – CRD 2012-02-18 18:48:12
@CRD謝謝。這個數據是由服務器返回的,並且null沒有插入。我使用HTTP頭中的內容類型來確定響應數據的編碼。如果有幫助,我使用** bold **(CFReadStreamCreateForHTTPRequest)作爲http請求。不知怎的,讀取的數據在兩者之間包含空字符。即使這是服務器中的問題,客戶端也需要處理它。我發現了一個線程,其中有一個類似的問題正在討論[link](http://www.cocoabuilder.com/archive/cocoa/174917-nul-characters-in-nsstring-cause-unexpected-results.html?q=NUL+串#174917)。 – Sriram 2012-02-19 07:09:25
將您實際使用的代碼添加到您的問題中。他們很可能會將您讀取的字節轉換爲NSString是您問題的原因。直到人們看到您的實際代碼,他們幾乎沒有機會幫助您。您也可以查看以十六進制格式打印出實際讀取的字節,以查看來自服務器的內容。 – CRD 2012-02-21 09:50:50