深度解析IOS開發(fā)中編碼轉(zhuǎn)換方法
IOS開發(fā)中編碼轉(zhuǎn)換方法是本文要介紹的內(nèi)容,主要是來學(xué)習(xí)一下編碼轉(zhuǎn)換的內(nèi)容,不多說,直接來看詳細(xì)內(nèi)容。我們可以使用以下方法進(jìn)行編碼轉(zhuǎn)換。
- NSString* str2 = [NSString stringWithCString:str1 encoding:enc1];
再調(diào)用NSString的cStringUsingEncoding:enc2實現(xiàn)從enc1到enc2的轉(zhuǎn)換
但是獲取enc枚舉值是個難題
1、NSString.h中只定義了以下編碼值
- enum {
- NSASCIIStringEncoding = 1,
- NSNEXTSTEPStringEncoding = 2,
- NSJapaneseEUCStringEncoding = 3,
- NSUTF8StringEncoding = 4,
- NSISOLatin1StringEncoding = 5,
- NSSymbolStringEncoding = 6,
- NSNonLossyASCIIStringEncoding = 7,
- NSShiftJISStringEncoding = 8,
- NSISOLatin2StringEncoding = 9,
- NSUnicodeStringEncoding = 10,
- NSWindowsCP1251StringEncoding = 11,
- NSWindowsCP1252StringEncoding = 12,
- NSWindowsCP1253StringEncoding = 13,
- NSWindowsCP1254StringEncoding = 14,
- NSWindowsCP1250StringEncoding = 15,
- NSISO2022JPStringEncoding = 21,
- NSMacOSRomanStringEncoding = 30,
- NSUTF16StringEncoding = NSUnicodeStringEncoding,
- #if MAC_OS_X_VERSION_10_4 <= MAC_OS_X_VERSION_MAX_ALLOWED || __IPHONE_2_0 <= __IPHONE_OS_VERSION_MAX_ALLOWED
- NSUTF16BigEndianStringEncoding = 0x90000100,
- NSUTF16LittleEndianStringEncoding = 0x94000100,
- NSUTF32StringEncoding = 0x8c000100,
- NSUTF32BigEndianStringEncoding = 0x98000100,
- NSUTF32LittleEndianStringEncoding = 0x9c000100
- #endif
- };
難道iphone中中文還不支持?不會吧?
2、iphone中肯定是支持中文的,只是NSString中沒有定義這個枚舉值,我們可以通過兩種方法獲得這個枚舉值,***個方法是通過CFStringConvertEncodingToNSStringEncoding
比如:
- NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);
- NSString* str2 = [NSString stringWithCString:str1 encoding:enc];
全部的kCFStringEncoding定義參考CFStringEncodingExt.h另外CFStringConvertIANACharSetNameToEncoding也很有用
3. 另外一種方法是通過
- const NSStringEncoding *encodings = [NSString availableStringEncodings];
- NSMutableString *str = [[NSMutableString alloc] init];
- NSStringEncoding encoding;
- while ((encoding = *encodings++) != 0)
- {
- [str appendFormat: @"%@ === %in", [NSString localizedNameOfStringEncoding:encoding], encoding];
- }
然后打印str數(shù)組,你就可以知道每一個encoding的枚舉值為多少了,比如中文的為-2147482063
小結(jié):深度解析IOS開發(fā)中編碼轉(zhuǎn)換方法的內(nèi)容介紹完了,希望通過本文的學(xué)習(xí)能對你有所幫助!