IOS URL无法对加号进行编码导致http请求时服务器端获取的内容中加号变成空格问题
一、背景。
将以下地址请求服务器时,如果postUrl中某个参数值包含符号+ 那么在服务器获取到这个参数值时,其加号变成了一个空格。
NSString *postUrl = "http地址";
postUrl = [postUrl stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding];
二、原因。
是因为当这个地址进行以上编码时并没有对加号进行处理,正常情况下地址中的加号应该被转码成%2B
三、解决方法。
[postUrl stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]已经是IOS过时的方法,应该是存在问题的,所以IOS不建议用。
应该采用方法:
postUrl = [postUrl stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet characterSetWithCharactersInString:@"#%<>[\\]^`{|}\"]+"].invertedSet];
其中方法[NSCharacterSet characterSetWithCharactersInString:@"#%<>[\\]^`{|}\"]+"]中的字符串"【#%<>[\\]^`{|}\"]+】用户可自定义,代表的意思是需要对这些特殊字符进行转码。里面包含了加号,当然就没问题了。
IOS URL无法对加号进行编码导致http请求时服务器端获取的内容中加号变成空格问题的更多相关文章
- [IOS多线程]的使用:防止进行HTTP数据请求时,UI卡死。
多线程的实现:NSThread 1.子线程的创建:两种方法 第一种: [NSThread detachNewThreadSelector:@selector(downloadImage:) toTar ...
- 【转】关于URL编码/javascript/js url 编码/url的三个js编码函数
来源:http://www.cnblogs.com/huzi007/p/4174519.html 关于URL编码/javascript/js url 编码/url的三个js编码函数escape(),e ...
- 关于URL编码/javascript/js url 编码/url的三个js编码函数
关于URL编码/javascript/js url 编码/url的三个js编码函数escape(),encodeURI(),encodeURIComponent() 本文为您讲述关于js(javasc ...
- url的三个js编码函数escape(),encodeURI(),encodeURIComponent()简介
url的三个js编码函数escape(),encodeURI(),encodeURIComponent()简介 2014年10月12日 16806次浏览 引子 浏览器URl地址,上网一定会用到,但是浏 ...
- iOS URL Schemes与漏洞的碰撞组合
iOS URL Schemes与漏洞的碰撞组合 前言 iOS URL Schemes,这个单词对于大多数人来说可能有些陌生,但是类似下面这张图的提示大部分人应该都经常看见: 今天要探究的就是:了解iO ...
- url的三个js编码函数escape(),encodeURI(),encodeURIComponent()简介【转】
引子 浏览器URl地址,上网一定会用到,但是浏览器地址有中文或者浏览器url参数操作的时候,经常会用到encodeURIComponent()和decodeURIComponent()以及encode ...
- 在iOS中将string转成UTF-8编码
在iOS开发中,特别是在对Web服务调用的时候,经常会遇到请求参数为中文的情况,那么这时候就需要将Url转成UTF-8编码才能进行请求.使用stringByAddingPercentEscapesUs ...
- 微信团队分享:iOS版微信是如何防止特殊字符导致的炸群、APP崩溃的?
本文来自微信开发团队yanyang的技术分享. 1.引言 相信大家都遇到过一段特殊文本可以让iOS设备所有app闪退的经历.前段时间大年初一,又出现某个印度语字符引起iOS11系统奔溃,所幸iOS版微 ...
- url请求时,参数中的+在服务器接收时为空格,导致AES加密报出javax.crypto.IllegalBlockSizeException: Input length must be multiple of 16 when decrypting with padded cipher
报错的意思的是使用该种解密方式出入长度应为16bit的倍数,但实际的错误却不是这个,错误原因根本上是因为在http请求是特殊字符编码错误,具体就是base64生成的+号,服务器接收时成了空格,然后导致 ...
随机推荐
- windows 安装 mysql5.7
1. 搜索“Mysql download”进入官网 或者点击链接 https://dev.mysql.com/downloads/ 进入官网,如下: 2. 下载对应的 MySQL 版本,如下: 点击 ...
- web页面效果开源框架收集整合
1.EasyUI:http://www.jeasyui.com/index.php 2.Bootstrap:http://www.bootcss.com/ 3.jqueryui:http://jque ...
- CString和string在unicode与非unicode下的相互转换(转)
原文转自 http://blog.csdn.net/u014303844/article/details/51397556 CString和string在unicode与非unicode下的相互转换 ...
- UVALIVE 2955 Vivian's Problem
参考: http://blog.csdn.net/acm_cxlove/article/details/7860735 感觉这里需要记录一下 #include <map> #include ...
- [Oracle] Transporting Tablespace
Transporting Tablespace Between Database [测试目的] 利用Oracle TTS(transport tablespace)特性实现表空间合并 [主要步骤] 确 ...
- selenium的动作链 actionchains
click(on_element=None) ——单击鼠标左键 click_and_hold(on_element=None) ——点击鼠标左键,不松开 context_click(on_elemen ...
- 移动web开发问题和优化小结
之前在微信公众号上看到的一篇文章,直接给拷过来了....原文链接http://mp.weixin.qq.com/s/0LwTz-Mw2WumSztIrHucdQ 2.Meta标签 页面在手机上显示时, ...
- Appium+python自动化18-brew、carthage和appium-doctor【转载】
前言 本篇安装brew.carthage,解决启动appium时的报错问题,另外安装appium-doctor检查appium的环境 1.brew 2.carthage 3.appium-doctor ...
- Selenium2+python自动化30-引入unittest框架【转载】
本篇转自博客:上海-悠悠 原文地址:http://www.cnblogs.com/yoyoketang/tag/unittest/ from selenium import webdriverfrom ...
- AC日记——[HNOI2008]水平可见直线 bzoj 1007
1007 思路: 维护一个下凸壳: 用单调栈来维护这玩意儿: 先将斜率排序: 然后判断栈顶元素和当前元素的交点x是否小于栈顶元素和栈顶上一个元素的交点x: 注意: 人神共愤的精度问题和输出空格问题: ...