歡呼聲,如果字符串不需要漂亮,應使用哪種編碼將NSData轉換爲NSString並向後轉換?
我的應用程序需要將一個NSData對象的內容作爲GET請求的參數發送到Web服務器。它應該能夠在以後收到相同的數據。數據將作爲長文本存儲在mysql數據庫中,內容不爲我所知,可能幾乎任何東西。
要做到這一點,我需要把它轉換成一個的NSString,但我應該選擇哪種編碼?只要雙方都一樣,我選擇哪一個都重要?
謝謝!
歡呼聲,如果字符串不需要漂亮,應使用哪種編碼將NSData轉換爲NSString並向後轉換?
我的應用程序需要將一個NSData對象的內容作爲GET請求的參數發送到Web服務器。它應該能夠在以後收到相同的數據。數據將作爲長文本存儲在mysql數據庫中,內容不爲我所知,可能幾乎任何東西。
要做到這一點,我需要把它轉換成一個的NSString,但我應該選擇哪種編碼?只要雙方都一樣,我選擇哪一個都重要?
謝謝!
如果確實需要將數據轉換爲字符串,使用Unicode編碼,爲Unicode爲每一個可能的字符代碼點。最常見的Unicode編碼是明顯UTF-8(NSUTF8StringEncoding
)
但如果這是你需要傳送任意數據,以及這些數據並不代表一個字符串,不要將它轉換成一個字符串,無論編碼爲。這將導致問題
相反(例如,如果你的數據有一個零字節,它會被視爲一個字符串結束,等等),如果你需要一些原始數據傳輸到服務器,可以考慮:
在Objective-C中查看Google for Base64編碼,有很多對廣泛使用的NSString + Base64類別的引用。
只要你使用相同種類的編碼,你應該是好的。對於大多數目的而言,UTF-8是很好的。 NSUTF8StringEncoding
您應該使用Base -64編碼此。看到這個答案的詳細信息/代碼:
How do I do base64 encoding on iphone-sdk?
的GET請求的參數應該是字符串,並且在理想的(兼容大多數)世界他們完全逃脫了7位ASCII。採取任意數據並將其編碼爲傳統的Unicode字符串編碼之一,以便將其放入URL中將導致各種痛苦和神祕錯誤。
BASE-64被設計成用於數據< =>串編碼。 (與字符串< =>字符串編碼。)
謝謝,quixoto!我會和AliSoftware的回答一起去,因爲他的速度更快,並有一個很好的解釋。 +1提供的鏈接和額外的見解! – Toastor