IOSにおける符号化変換方法

5970 ワード

IOSにおける符号化変換方法(回転)


IOS開発における符号化変換方法は本稿で紹介する内容であり,主に符号化変換の内容を学習しに来たが,多くは言わず,直接詳細を見に来た.以下の方法を用いて符号化変換を行うことができる.

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

NSStringのcStringUsingEncoding:enc 2を再呼び出してenc 1からenc 2への変換を実現
しかし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ではこの列挙値が定義されていません.この列挙値は2つの方法で得ることができます.最初の方法は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の列挙値がどれだけあるかがわかります.例えば、中国語は-217482063です.
小結:IOS開発における符号化変換方法の深さ解析の内容を紹介しました.
原文:http://mobile.51cto.com/iphone-283494.htm