iOS 基本编码格式转化

news/2024/11/24 3:23:53/

iOS中编码转化

1.UTF-8转化

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

    //转换成UTF-8

    NSString *dataUTF8 = [data stringByAddingPercentEscapesUsingEncoding: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 = [dataUTF8 stringByReplacingPercentEscapesUsingEncoding: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 = [NSMutableString stringWithString:input];  

    [outputStr replaceOccurrencesOfString:@"+"  

                               withString:@" "  

                                  options:NSLiteralSearch  

                                    range:NSMakeRange(0, [outputStr length])];  

    

    return [outputStr stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];  

}

2.UTF-8和Unicode转化

//UnicodeUTF-8

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

{

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

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

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

    NSData *tempData = [tempStr3 dataUsingEncoding:NSUTF8StringEncoding];  

    NSString* returnStr = [NSPropertyListSerialization propertyListFromData:tempData  

                                                           mutabilityOption:NSPropertyListImmutable   

                                                                     format:NULL  

                                                           errorDescription:NULL];  

    

    return [returnStr stringByReplacingOccurrencesOfString:@"\\r\\n" withString:@"\n"]; 

}



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

{

    NSUInteger length = [string length];

    NSMutableString *s = [NSMutableString stringWithCapacity:0];

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

    {

        unichar _char = [string characterAtIndex:i];

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

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

        {

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

        }

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

        {

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

            

        }

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

        {

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

            

        }

        else

        {

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

        }

    }

    return s;

}




http://www.ppmy.cn/news/339052.html

相关文章

苹果id是什么格式的_正常聊个天手机就被黑了?苹果一口气曝出13个远程攻击漏洞...

整天 不务正业 帮其他公司找产品漏洞的谷歌安全小组 “ 零日计划 ” 又又又立功了。 克里斯埃文斯&#xff0c;谷歌 “ 零日计划 ” 安全小组主管▼ 前一阵&#xff0c;谷歌的 “ 零日计划 ” 小组一口气在苹果的操作系统里找出了 13 个可能被黑客拿来搞远程攻击的漏洞。 而且…

如何重新设置苹果id密码_ios游戏apple账号分享韩国苹果id密码大全

韩区id申请注册流程和在国内申请注册账号流程不一样&#xff0c;所选地区和填写信息要求不一样&#xff0c;现在很多游戏或者其他软件只能在日本地区发行&#xff0c;想要下载这些软件就必须要注册日本地区的id账号就能下载。 申请注册韩区id除了要注意选择地区之外&#xff0c…

苹果id是什么格式的_可以修改微信号了,怎样起一个好看又好记的微信号ID?...

最近关于修改微信ID(就是微信号)的新闻很多,相信大家好多人都想修改微信号,好多人当年年少无知起的微信号可能是前任的生日,可能是自己的名字,可能是某个迷恋对象的爱称,然后没办法修改只能一直用到了现在。 现在微信终于支持修改微信号ID了,一定好利用起来,起一个好看…

原生js实现大屏可视化

[## 数据可视化 借助图形化的手段&#xff0c;清晰有效的沟通信息数据可视化可以把数据从冰冷的数字转换为图形&#xff0c;揭示数据的规律和道理 可视化适配方案 使用less实现css编写 使用到less&#xff0c;可以在vscode中安装easy less插件&#xff0c;配合nodejs,然后安…

Fine Report数据大屏展示

城市系统 宏观经济 企业监测 土地市场

java开发h265_VR虚拟现实大屏展示如何通过H265播放器实现8K视频流播放?

VR正在改变我们生活、社交和工作方式。今天的消费者正在寻找体验&#xff0c;经过近几年的研究&#xff0c;我们知道VR有能力在未来的学习和发展中发挥巨大的作用。TSINGSEE青犀视频开发的EasyPlayerPro作为一款专业播放器&#xff0c;在VR播放扮演了重要的角色。 下面我们看下…

在vue3中使用scale对大屏幕做自适应处理

scale 的使用 在做大屏或者是需要用到多个定位的情况下&#xff0c;屏幕的大小会改变布局&#xff0c;这种情况下可以使用 scale 对屏幕做自适应处理 <div class"login-container"><div class"login-main" ref"dataScreenRef"><…

Qt+ECharts 数据大屏

简介&#xff1a;最近看见有些同学在汇报项目时&#xff0c;发现做的大屏数据挺好看&#xff0c;甩了平常用Qt开发的界面好几条街&#xff0c;但是对于像我这种不会前端的&#xff0c;又想做出来点大屏数据玩玩&#xff0c;而只靠QWt或QCustomplot或QCharts确实不太容易&#x…