2012-03-09 148 views
1

我想知道一個字符串是否是單字節編碼。 CFShowStr可以完成這項工作,但它會將消息輸出到控制檯。該CFShowStr功能輸出消息是這個樣子的IsEightBit項目是我想:如何從CFString獲取特定屬性

Length 7  
IsEightBit 1  
HasLengthByte 0  
HasNullByte 1  
InlineContents 0  
Allocator SystemDefault  
Mutable 0  
Contents 0x104f9fef3  

回答

0

我不認爲8位標記意味着什麼,你認爲它。請參閱CFShowStr的文檔:

使用此函數可以在調試期間瞭解CFString對象的特定屬性。這些屬性包括以下內容:(...) 最初是否爲8位字符串,如果是,則是否爲 C(HasNullByte)或Pascal(HasLengthByte)字符串。

我不知道CFString在內部使用什麼編碼。你爲什麼關心八位?因爲在大多數情況下你不應該。

+0

下面的代碼段使用棄用碳API,我想用非碳功能重寫它。 '如果((GetScriptVariable(smSystemScript,smScriptFlags)smsfSingByte)== 0){}' 由於某種原因,多字節編碼仍然在系統 – magiclyx 2012-03-10 10:33:36

+0

什麼是碼範圍內,裏面有什麼那些使用'{} '?您可能可以重寫代碼,而無需查看實現細節。 – zoul 2012-03-12 08:05:30