深度解析IOS开发中编码转换方法

移动开发 iOS
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开发编码转换方法的内容介绍完了,希望通过本文的学习能对你有所帮助!

责任编辑:zhaolei 来源: 互联网
相关推荐

2014-02-19 09:59:52

iOS开发Html解析

2011-08-12 13:53:00

IOS框架

2011-08-11 17:00:33

iPhone数据库SQLite

2011-06-09 14:56:53

QT 编译

2011-07-07 16:38:21

iOS UITableVie

2011-08-16 16:24:51

IOS开发HTML5编码

2011-08-31 15:59:10

LUAWeb 开发

2011-05-27 17:28:01

Android

2018-08-09 20:47:41

2011-06-16 15:17:16

2011-08-04 18:39:32

iOS XML

2011-08-19 13:51:12

2011-08-12 14:54:45

iPhone委托

2011-06-07 17:16:47

iPhone 数据

2009-09-24 13:25:58

Hibernate m

2011-08-02 11:30:41

iOS开发 邮件发送

2022-10-18 08:23:38

机器学习转换器NLP

2016-05-12 15:51:08

前端开发字符编码

2013-04-01 17:05:28

2012-08-24 09:05:30

IBMdW
点赞
收藏

51CTO技术栈公众号