您的位置:首页 > 移动开发 > IOS开发

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

2012-07-31 16:29 316 查看
IOS开发中编码转换方法是本文要介绍的内容,主要是来学习一下编码转换的内容,不多说,直接来看详细内容。我们可以使用以下方法进行编码转换。
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: