給定一個字符串字符串,例如「utf-8」,「iso-8859-1」,「us-ascii」等等,是否有任何內置方式可以在Cocoa中獲得合適的NSStringEncoding ?將字符集名稱轉換爲NSStringEncoding
現在,我正在研究構建一個NSDictionary,其中包含映射到NSStringEncoding的名稱的規範化版本,然後以相同方式對輸入進行規範化處理。但是真的沒有辦法得到NSUTF8StringEncoding給定的字符串「UTF-8」等?
給定一個字符串字符串,例如「utf-8」,「iso-8859-1」,「us-ascii」等等,是否有任何內置方式可以在Cocoa中獲得合適的NSStringEncoding ?將字符集名稱轉換爲NSStringEncoding
現在,我正在研究構建一個NSDictionary,其中包含映射到NSStringEncoding的名稱的規範化版本,然後以相同方式對輸入進行規範化處理。但是真的沒有辦法得到NSUTF8StringEncoding給定的字符串「UTF-8」等?
你必須經過CoreFoundation。
CFStringConvertIANACharSetNameToEncoding
CFStringConvertEncodingToNSStringEncoding
首先轉換IANA字符設置爲CFStringEncoding值(這是不一樣的NSStringEncoding),然後將CFStringEncoding轉換爲NSStringEncoding。
NSString *encodingString = @"utf-8"
NSStringEncoding encoding = CFStringConvertEncodingToNSStringEncoding(CFStringConvertIANACharSetNameToEncoding((CFStringRef) encodingString));
我不認爲有任何內置的方式來實現這一點。我認爲你的建議 - 建立一個有價值的字典 - 是一個明智的方式去這裏。沒有那麼多的編碼,所以它應該是相當微不足道的,並且可能比試圖找到一種內置的方式更快。
NSStringEncoding utfEncoding = NSUTF8StringEncoding;
NSLog(@"%lu",utfEncoding);
NSString * utf8Name = @"UTF-8";
CFStringEncoding aEncoding = CFStringConvertIANACharSetNameToEncoding((CFStringRef)utf8Name);
utfEncoding = CFStringConvertEncodingToNSStringEncoding(aEncoding);
NSLog(@"%lu",utfEncoding);
謝謝,這似乎像它應該做的伎倆。 – d11wtq 2010-05-23 13:35:21