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

soゝso 2016-08-22 18:44:28 7530

请求后的结果如下:

{
    "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

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


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

相关文章
为什么很多第三方接口,都改成了基于http,直接传递json数据的方式来代替webservice?
不是Maven项目怎么引入Maven 方式的Jar包(七牛篇)
Java客户端Jedis 对Redis的的八种调用方式(事务、管道、分布式)介绍及测试
MyEclipse8.5 注册码生成 Java代码实现方式。永久免费
Freemarker静态化加载模板的三种方式
男人进不去的她社区 如何靠俩男人取得千万女性用户,她社区刷排行榜了没?
Elasticsearch 教程,Elasticsearch部署阿里云集群,支持外网请求方式
JS中 “is not defined” 如何判断defined,defined和undefined 的区别
JSOUP 教程,JSOUP爬虫教程,JSOUP超时分析与处理
JSOUP教程,JSOUP 乱码处理,JSOUP生僻字乱码解决方案
最新文章
Javascript 加密/压缩后运行不了,JavaScript报错排查讲解 22
JavaScript 不可逆加密问题排查之方案一(闭包优化) 22
Java爬虫,Jsoup 爬取大众点评、美团商家信息电话号码解决方案 152
分解质因数 JavaScript 计算方式,及分解质因数讲解 4
湖南腾众4s店服务怎么样?进来看看你就知道了 27
SEO 之 SpringMVC redirect 301,301和302区别详细讲解 69
网站如何设置404页面、500等错误页面,有什么漏洞?怎么预防? 87
Java 文字转图片输出,Java 输出透明背景图片,Java文字转图片防爬虫 143
HttpClient获取访问域名的真实ip,HttpClient请求获取目标IP地址 258
又拍云24小时日志下载方法,日志合并,.gz 压缩包多个合并方法 42
最热文章
免费天气API,全国天气 JSON API接口,可以获取五天的天气预报 174625
Elasticsearch教程(四) elasticsearch head 插件安装和使用 137987
我为什么要选择RabbitMQ ,RabbitMQ简介,各种MQ选型对比 116249
Elasticsearch教程(六) elasticsearch Client创建 81935
Elasticsearch教程(二),IK分词器安装 76990
Elasticsearch教程(一),全程直播(小白级别) 76877
Elasticsearch教程(八) elasticsearch delete 删除数据(Java) 76667
苹果电脑Mac怎么恢复出厂系统?苹果系统怎么重装系统? 74060
Elasticsearch教程(五) elasticsearch Mapping的创建 69248
Elasticsearch教程(三),IK分词器安装 (极速版) 58117

骚码加入我们 / 千人QQ群:259217951

入群需要5元,如果没有QQ钱包,可以先Alipay、微信,赞助然后加群主拉进。

二维码生成 来自 >> 二维码生成器

支付扫码

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

正在加载... ...