2011-09-21 67 views

回答

2

我有其中包含與NSUTF8Encoding編碼數據一個NSString。

真的嗎? 因爲NSString在內部始終將其內容視爲UTF-16。因爲您無法確定NSString如何在內部存儲其數據。從概念上講,NSString使用UTF-16。

我想將該字符串轉換爲NSASCIIStringEncoding。因爲你不能保證一個NSString可以轉換爲ASCII

if ([myString canBeConvertedToEncoding:NSASCIIStringEncoding]) { 
    const char *asciiString = [myString cStringUsingEncoding:NSASCIIStringEncoding]; 
} 
+2

+1的測試是非常重要的。 – JeremyP

+0

我的印象是,NSString的內部表示根據類簇想要如何優化它而變化。 Apple在哪裏說它總是UTF-16? – LucasTizma

+1

Lucas:參見http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Strings/Articles/stringsClusters.html:「NSString對象在概念上是UTF-16,平臺排列順序不一定。暗示着它們內部存儲機制的任何內容;它的含義是NSString的長度,字符索引和範圍用UTF-16單位來表示,而NSString方法名稱中的「字符」這個術語是指16位平臺的endian UTF-16單元「。 - 所以你至少部分是正確的。在概念上它是UTF-16,但沒有定義實際的存儲。 –

相關問題