深度解析IOS开发中编码转换方法
2012-07-31 16:29
316 查看
IOS开发中编码转换方法是本文要介绍的内容,主要是来学习一下编码转换的内容,不多说,直接来看详细内容。我们可以使用以下方法进行编码转换。
再调用NSString的cStringUsingEncoding:enc2实现从enc1到enc2的转换
但是获取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
比如:
全部的kCFStringEncoding定义参考CFStringEncodingExt.h另外CFStringConvertIANACharSetNameToEncoding也很有用
3. 另外一种方法是通过
然后打印str数组,你就可以知道每一个encoding的枚举值为多少了,比如中文的为-2147482063
小结:深度解析IOS开发中编码转换方法的内容介绍完了,希望通过本文的学习能对你有所帮助!
转载自:http://mobile.51cto.com/iphone-283494.htm
NSString* str2 = [NSString stringWithCString:str1 encoding:enc1];
再调用NSString的cStringUsingEncoding:enc2实现从enc1到enc2的转换
但是获取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数组,你就可以知道每一个encoding的枚举值为多少了,比如中文的为-2147482063
小结:深度解析IOS开发中编码转换方法的内容介绍完了,希望通过本文的学习能对你有所帮助!
转载自:http://mobile.51cto.com/iphone-283494.htm
相关文章推荐
- (转载)深度解析IOS开发中编码转换方法
- iOS开发实战:SDWebImage深度解析
- IOS开发学习27 ObjectC 自带json解析方法的使用
- iOS开发中的Html解析方法
- iOS开发之Masonry框架源码深度解析
- iOS开发中常见的解析XML的类库以及简要安装方法
- iOS开发中的Html解析方法
- 解析iOS应用的UI开发中懒加载和xib的简单使用方法
- IOS开发之——四种方法解析Json数据(转)
- iOS开发之Masonry框架源码深度解析
- [转]IOS开发中四种解析Json的方法
- iOS开发之 Json解析的四种方法
- iOS 基础类解析 - NSCharacterSet___开发中判断空字符串的几种方法
- iOS开发之Masonry框架源码深度解析
- iOS开发之Masonry框架源码深度解析
- iOS开发init方法解析
- 让你5分钟内学懂,iOS开发底层原理技术~RAC深度解析
- iOS开发中的Html解析方法
- 【iOS开发-网络】两种常用的方法解析XML数据
- iOS开发之Alamofire源码深度解析