IOS 中 urldecode 如何解码后,解码后“+”(加号)和空格处理方式

JSON 2016-08-22 18:44:28 21218

请求后的结果如下:

{
    "IsSuccess": 1,
    "ResCode": "1",
    "ResMsg": "成功",
    "Data": {
        "ID": "249",
        "Type": "1",
        "Title": "物业福利大放送",
        "Second_Title": "物业福利",
        "Event_Date": "",
        "Main_Pic": "!UploadFiles%5cWB_Content_Pic%5c20151013152614459.jpg",
        "Writer": "物业管理处",
        "Info": "%3cp+class%3d%22MsoNormal%22%    	这里省略了20KB....",
        "FromWhere": "蓝堡国际",
        "Hit_Count": "1"
    }
}

这里看到的 Info下是一个较大的HTML富文本值,里面各种符号,也有特殊符号,但是采用的传输格式是JSON,所以采用了 url encode 加密,然后 decode解密 。

JavaAndroid解析都能decode正常的解析过来。

Base64 base64 = new Base64();  //org.apache.xmlbeans.impl.util.Base64

byte[] bytes = base64.encode(s.getBytes("UTF-8"));  
String base64Str = new String(bytes, "UTF-8");  
result.put("info", base64Str);
System.out.println("\n\n\n");
System.out.println(base64Str);
byte[] decodebyte = base64.decode(base64Str.getBytes());
String decodeStr = new String(decodebyte, "UTF-8");
System.out.println(decodeStr);
//解析后不乱码,原来的空格也恢复成空格。

在IOS环境,业红(备注:业红是个人名)后来想到一个大招。

首先把接收到的信息,replace把“+”替换成 “ ” ,然后再decode。说到这里,有人会说了,那如果本来就有(“+”)加号呢?加号encode后不是空格,也不是加号,而是%2b,正常情况下,空格是%20,那也就是说,如果原文中有加号,是不会正常显示的,也就是在接收到信息的时候,先replace,然后再decode,这样就解决了。

代码如下:

//获取字符串
NSString *content = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
//替换+ 为空格
content = [content stringByReplacingOccurrencesOfString:@"+" withString:@" "];
//decode
content = [content stringByRemovingPercentEncoding];
NSLog(@"%@",content);

希望有完美解决方案的,在下面给出完美解决方案。

转载请注明出处:https://www.sojson.com/blog/6.html

版权所属:SO JSON在线解析

原文地址:https://www.sojson.com/blog/6.html

转载时必须以链接形式注明原始出处及本声明。


如果本文对你有帮助,那么请你赞助我,让我更有激情的写下去,帮助更多的人。

关于作者
一个低调而闷骚的男人。
相关文章
URL乱七八糟的字符讲解,来源以及如何解
Redis与Memcached的比较 ,然选择了Redis
MD5如何解密?
JS “is not defined” 如何判断defined,definedundefined 的区别
Java 获取HTPP 301 / 302 重定向的Url地址,301302对SEO的影响
如何解析JSON数据(详细解答)
Java获取重定向的真实URL地址
Javascript 删除节点是否需要将手动将事件解绑?
如何把自己的Jar包上传到 maven 官方仓库,Maven上传图文讲解
HTMLJSON如何互转
最新文章
文件上传漏洞与防御 4058
前端构建工具选型指南:Webpack、Vite、Rollup、esbuild 深度对比 1444
物联网时代2026年时序数据库选型指南 1151
SaaS行业面临AI挑战:从“无限复用”到“灵活适应” 1269
神经网络:从构造到模型训练全链路解析 1168
一文吃透 Redis 核心存储结构:ziplist、listpack 与哈希表扩容 / 并发查询 1593
Linux sudo提权完整指南:从基础用法到生产级安全配置 691
XSS 和 CSRF 的本质区别及开发防御全解析 772
JVM垃圾回收(GC)全维度解析:从原理到调优实战 813
Linux动静态库与ELF加载全解析:从实操制作到底层原理 912
最热文章
免费天气API,天气JSON API,不限次数获取十五天的天气预报 783114
最新MyEclipse8.5注册码,有效期到2020年 (已经更新) 711464
苹果电脑Mac怎么恢复出厂系统?苹果系统怎么重装系统? 679993
Jackson 时间格式化,时间注解 @JsonFormat 用法、时差问题说明 562673
我为什么要选择RabbitMQ ,RabbitMQ简介,各种MQ选型对比 512621
Elasticsearch教程(四) elasticsearch head 插件安装和使用 484794
Jackson 美化输出JSON,优雅的输出JSON数据,格式化输出JSON数据... ... 302947
Java 信任所有SSL证书,HTTPS请求抛错,忽略证书请求完美解决 247433
Elasticsearch教程(一),全程直播(小白级别) 233097
谈谈斐讯路由器劫持,你用斐讯路由器,你需要知道的事情 228329
支付扫码

所有赞助/开支都讲公开明细,用于网站维护:赞助名单查看

查看我的收藏

正在加载... ...