zoukankan      html  css  js  c++  java
  • 【转】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

  • 相关阅读:
    BZOJ3510 首都
    洛谷U19464 山村游历(Wander)(LCT)
    [BZOJ4530][Bjoi2014]大融合(LCT)
    POJ 3522 最小差值生成树(LCT)
    AHOI2005航线规划 bzoj1969(LCT缩点)
    P3950 部落冲突
    BZOJ2243 [SDOI2011]染色(LCT)
    P1501 [国家集训队]Tree II
    性能优化之优化加载资源
    Hexo next主题安装algolia
  • 原文地址:https://www.cnblogs.com/ydhliphonedev/p/2795445.html
Copyright © 2011-2022 走看看