• 【转】iOS中编码转化


    原文地址:http://blog.csdn.net/huifeidexin_1/article/details/7883984

    iOS中编码转化

    1.UTF-8转化

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

        //转换成UTF-8

        NSString *dataUTF8 = [datastringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

        NSLog(@"%@",dataUTF8);

        //UTF-8GBK,将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 = [dataUTF8stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

        NSLog(@"%@",dataGBK);

     

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

    将上述方法封装,如下:

     

    //UnicodeUTF-8

     

    + (NSString *)encodeToPercentEscapeString: (NSString *) input 

        // Encode all the reserved characters, per RFC 3986 

        // (<http://www.ietf.org/rfc/rfc3986.txt>) 

        NSString *outputStr = (NSString *)  

        CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault

                                                (CFStringRef)input, 

                                                NULL

                                                (CFStringRef)@"!*'();:@&=+$,/?%#[]"

                                                kCFStringEncodingUTF8); 

        return outputStr; 

     

    + (NSString *)decodeFromPercentEscapeString: (NSString *) input 

        NSMutableString *outputStr = [NSMutableStringstringWithString:input]; 

        [outputStr replaceOccurrencesOfString:@"+" 

                                   withString:@" " 

                                      options:NSLiteralSearch 

                                        range:NSMakeRange(0, [outputStrlength])]; 

       

        return [outputStrstringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 

    }

     

    2.UTF-8和Unicode转化

     

    //UnicodeUTF-8

    + (NSString*) replaceUnicode:(NSString*)aUnicodeString

    {

        NSString *tempStr1 = [aUnicodeStringstringByReplacingOccurrencesOfString:@"\\u"withString:@"\\U"]; 

        NSString *tempStr2 = [tempStr1stringByReplacingOccurrencesOfString:@"\""withString:@"\\\""]; 

        NSString *tempStr3 = [[@"\""stringByAppendingString:tempStr2] stringByAppendingString:@"\""]; 

        NSData *tempData = [tempStr3dataUsingEncoding:NSUTF8StringEncoding]; 

        NSString* returnStr = [NSPropertyListSerializationpropertyListFromData:tempData 

                                                               mutabilityOption:NSPropertyListImmutable  

                                                                        format:NULL 

                                                               errorDescription:NULL]; 

       

        return [returnStrstringByReplacingOccurrencesOfString:@"\\r\\n"withString:@"\n"];

    }

     

     

    +(NSString *) utf8ToUnicode:(NSString *)string

    {

        NSUInteger length = [string length];

        NSMutableString *s = [NSMutableStringstringWithCapacity:0];

        for (int i = 0;i < length; i++)

        {

            unichar _char = [string characterAtIndex:i];

            //判断是否为英文和数字

            if (_char <= '9' && _char >='0')

            {

                [s appendFormat:@"%@",[stringsubstringWithRange:NSMakeRange(i,1)]];

            }

            else if(_char >='a' && _char <= 'z')

            {

                [s appendFormat:@"%@",[stringsubstringWithRange:NSMakeRange(i,1)]];

               

            }

            else if(_char >='A' && _char <= 'Z')

            {

                [s appendFormat:@"%@",[stringsubstringWithRange:NSMakeRange(i,1)]];

               

            }

            else

            {

                [s appendFormat:@"\\u%x",[stringcharacterAtIndex:i]];

            }

        }

        return s;

    }

     

    by:panguo

  • 相关阅读:
    poj1273
    JavaSE入门学习23:Java面向对象之构造方法
    NOI 2015 滞后赛解题报告
    LuaInterface简单介绍
    解决在onCreate()过程中获取View的width和Height为0的4种方法
    函数指针和指针函数
    Quartz-中断正在执行的任务
    servlet3.0获取参数与文件上传代码示例
    Servlet学习:(三)Servlet3.0 上传文件
    layui 批量上传文件 + 后台 用servlet3.0接收【我】
  • 原文地址:https://www.cnblogs.com/ydhliphonedev/p/2795445.html
Copyright © 2020-2023  润新知