厚积薄发,滴水穿石

搬家到主站了:http://www.cnblogs.com/cokecoffe/
随笔 - 45, 文章 - 8, 评论 - 12, 引用 - 0
数据加载中……

IOS中编码转换方法(转)

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

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

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

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

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

  1. enum {  
  2.     NSASCIIStringEncoding = 1,                 
  3.     NSNEXTSTEPStringEncoding = 2,  
  4.     NSJapaneseEUCStringEncoding = 3,  
  5.     NSUTF8StringEncoding = 4,  
  6.     NSISOLatin1StringEncoding = 5,  
  7.     NSSymbolStringEncoding = 6,  
  8.     NSNonLossyASCIIStringEncoding = 7,  
  9.     NSShiftJISStringEncoding = 8,           
  10.     NSISOLatin2StringEncoding = 9,  
  11.     NSUnicodeStringEncoding = 10,  
  12.     NSWindowsCP1251StringEncoding = 11,     
  13.     NSWindowsCP1252StringEncoding = 12,     
  14.     NSWindowsCP1253StringEncoding = 13,     
  15.     NSWindowsCP1254StringEncoding = 14,     
  16.     NSWindowsCP1250StringEncoding = 15,     
  17.     NSISO2022JPStringEncoding = 21,          
  18.     NSMacOSRomanStringEncoding = 30,  
  19.  
  20.     NSUTF16StringEncoding = NSUnicodeStringEncoding,        
  21.  
  22. #if MAC_OS_X_VERSION_10_4 <= MAC_OS_X_VERSION_MAX_ALLOWED || __IPHONE_2_0 <= __IPHONE_OS_VERSION_MAX_ALLOWED  
  23.     NSUTF16BigEndianStringEncoding = 0x90000100,           
  24.     NSUTF16LittleEndianStringEncoding = 0x94000100,        
  25.  
  26.     NSUTF32StringEncoding = 0x8c000100,                     
  27.     NSUTF32BigEndianStringEncoding = 0x98000100,           
  28.     NSUTF32LittleEndianStringEncoding = 0x9c000100          
  29. #endif  
  30. }; 

难道iphone中中文还不支持?不会吧?

2、iphone中肯定是支持中文的,只是NSString中没有定义这个枚举值,我们可以通过两种方法获得这个枚举值,第一个方法是通过CFStringConvertEncodingToNSStringEncoding
比如:

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

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

3. 另外一种方法是通过

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

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

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

原文:http://mobile.51cto.com/iphone-283494.htm

posted on 2012-02-06 11:18 Wangkeke 阅读(6628) 评论(0)  编辑 收藏 引用 所属分类: IOS


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理