IOS开发中编码转换

IOS开发编码转换方法是本文要介绍的内容,主要是来学习一下编码转换的内容,不多说,直接来看详细内容。我们可以使用以下方法进行编码转换。

  1. NSString* str2 = [NSString stringWithCString:str1 encoding:enc1]; 

再调用NSString的cStringUsingEncoding:enc2实现从enc1到enc2的转换

但是获取enc枚举值是个难题

1、NSString.h中只定义了以下编码值

  1. 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
比如:

  1. NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);  
    NSString* str2 = [NSString stringWithCString:str1 encoding:enc]; 
    

      

全部的kCFStringEncoding定义参考CFStringEncodingExt.h另外CFStringConvertIANACharSetNameToEncoding也很有用

3. 另外一种方法是通过

  1. const NSStringEncoding *encodings = [NSString availableStringEncodings];  
    NSMutableString *str = [[NSMutableString alloc] init];  
    NSStringEncoding encoding;  
    while ((encoding = *encodings++) != 0)  
    {  
             [str appendFormat: @"%@ === %in", [NSString localizedNameOfStringEncoding:encoding], encoding];  
    } 
    

      

然后打印str数组,你就可以知道每一个encoding的枚举值为多少了,比如中文的为-2147482063

小结:深度解析IOS开发编码转换方法的内容介绍完了,希望通过本文的学习能对你有所帮助!

posted @ 2012-09-21 15:38  痴人指路  阅读(408)  评论(0编辑  收藏  举报