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比如:NSStringEncodingenc=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