• ios基本编码格式转换UTF8


    iOS中编码转化

    1.UTF-8转化

        NSString *data = @"你好,北京!";

        //转换成UTF-8

        NSString *dataUTF8 = [data stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

        NSLog(@"%@",dataUTF8);

        //UTF-8转GBK,将UTF8代码替换,官方解释如下。

    //Replaces all percent escapes with the matching characters as determined by the given encoding.  Returns nil if the transformation is not possible (i.e. the percent escapes give a byte sequence not legal in the given encoding).  See CFURLCreateStringByReplacingPercentEscapes in CFURL.h for more complex transformations

     

        NSString *dataGBK = [dataUTF8 stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

        NSLog(@"%@",dataGBK);

     

    在Xcode4.2中执行结果如下:

    将上述方法封装,如下:

     

     1 //Unicode转UTF-8
     2 
     3  
     4 
     5 + (NSString *)encodeToPercentEscapeString: (NSString *) input  
     6 
     7 {  
     8 
     9     // Encode all the reserved characters, per RFC 3986  
    10 
    11     // (<http://www.ietf.org/rfc/rfc3986.txt>)  
    12 
    13     NSString *outputStr = (NSString *)   
    14 
    15     CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,  
    16 
    17                                             (CFStringRef)input,  
    18 
    19                                             NULL,  
    20 
    21                                             (CFStringRef)@"!*'();:@&=+$,/?%#[]",  
    22 
    23                                             kCFStringEncodingUTF8);  
    24 
    25     return outputStr;  
    26 
    27 }  
    28 
    29  
    30 
    31 + (NSString *)decodeFromPercentEscapeString: (NSString *) input  
    32 
    33 {  
    34 
    35     NSMutableString *outputStr = [NSMutableString stringWithString:input];  
    36 
    37     [outputStr replaceOccurrencesOfString:@"+"  
    38 
    39                                withString:@" "  
    40 
    41                                   options:NSLiteralSearch  
    42 
    43                                     range:NSMakeRange(0, [outputStr length])];  
    44 
    45     
    46 
    47     return [outputStr stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];  
    48 
    49 }

     

    2.UTF-8和Unicode转化

     

     1 //Unicode转UTF-8
     2 
     3 + (NSString*) replaceUnicode:(NSString*)aUnicodeString
     4 
     5 {
     6 
     7     NSString *tempStr1 = [aUnicodeString stringByReplacingOccurrencesOfString:@"\u" withString:@"\U"];  
     8 
     9     NSString *tempStr2 = [tempStr1 stringByReplacingOccurrencesOfString:@""" withString:@"\""];  
    10 
    11     NSString *tempStr3 = [[@""" stringByAppendingString:tempStr2] stringByAppendingString:@"""];  
    12 
    13     NSData *tempData = [tempStr3 dataUsingEncoding:NSUTF8StringEncoding];  
    14 
    15     NSString* returnStr = [NSPropertyListSerialization propertyListFromData:tempData  
    16 
    17                                                            mutabilityOption:NSPropertyListImmutable   
    18 
    19                                                                      format:NULL  
    20 
    21                                                            errorDescription:NULL];  
    22 
    23     
    24 
    25     return [returnStr stringByReplacingOccurrencesOfString:@"\r\n" withString:@"
    "]; 
    26 
    27 }
    28 
    29  
    30 
    31  
    32 
    33 +(NSString *) utf8ToUnicode:(NSString *)string
    34 
    35 {
    36 
    37     NSUInteger length = [string length];
    38 
    39     NSMutableString *s = [NSMutableString stringWithCapacity:0];
    40 
    41     for (int i = 0;i < length; i++) 
    42 
    43     {
    44 
    45         unichar _char = [string characterAtIndex:i];
    46 
    47         //判断是否为英文和数字
    48 
    49         if (_char <= '9' && _char >= '0') 
    50 
    51         {
    52 
    53             [s appendFormat:@"%@",[string substringWithRange:NSMakeRange(i, 1)]];
    54 
    55         }
    56 
    57         else if(_char >= 'a' && _char <= 'z')
    58 
    59         {
    60 
    61             [s appendFormat:@"%@",[string substringWithRange:NSMakeRange(i, 1)]];
    62 
    63             
    64 
    65         }
    66 
    67         else if(_char >= 'A' && _char <= 'Z')
    68 
    69         {
    70 
    71             [s appendFormat:@"%@",[string substringWithRange:NSMakeRange(i, 1)]];
    72 
    73             
    75         }
    76 
    77         else
    78 
    79         {
    80 
    81             [s appendFormat:@"\u%x",[string characterAtIndex:i]];
    82 
    83         }
    84 
    85     }
    86 
    87     return s;
    88 
    89 }
  • 相关阅读:
    适用于小白的 python 快速入门教程
    Centos7.x & RedHat7.x系统忘记 root 密码解决办法
    让我来教你如何免费使用RHEL小红帽系统
    10#Windows注册表的那些事儿
    9#搭建网站
    8#继承和多态
    7#Java基本语句语法
    6#day2总结
    5#关于数据数值的转换
    .NET Core开发日志——配置
  • 原文地址:https://www.cnblogs.com/csdnIOS/p/4195354.html
Copyright © 2020-2023  润新知