Swift URLEncode

URL特殊字符编码全解析:百分号编码原理、encodeURIComponent实战与乱码排查 URL作为网络请求的基础载体,其参数传递常因特殊字符引发400、乱码甚至安全漏洞。理解百分号编码(Percent-Encoding)是解决这类问题的关键:它通过将非ASCII字符与保留字符转换为%XX形式,确保URL在任何环境下都能被无歧义解析。以UTF-8为例,中文占3字节导致编码后长度显著增加,直接影响URL长度上限与网关兼容性。掌握编码原则与工具方法(如encodeURIComponent与encodeURI的选型、URLSearchParams自动编码)能有效规避拼接错误。从实际工程视角出发,该知识 阅读详情

Swift URL Encode问题

: 最近在做swift项目时,遇到一个比较有意识的事情,服务端返回的html string按照URL Encode编码之后,iOS这边无法正常加载html,安卓可以的.于是在排查问题,最终发现是后端做URLEncode时,对于空格编码之后,对应的是"+",没错就是"加号",导致在iOS这边Decode之后,无法拿到正确的htmlString.

记录一下,之前也没遇到过类似问题.也希望对遇到类似问题的兄弟姐们有个帮助.

以下代码均是Swift版本的

1. “空格"和”+"在不同系统的编码

安卓系统
  • “空格” --> “+”
  • “+” --> “%2b”
iOS系统
  • “空格” --> “%20”
  • “+” --> “%2b”

通过对比很容易就能发现,为啥按照正常的操作无法decode了,因为编码结果不同,所以解码的时候在含有这些特殊字符的时候就会出现相关异常.

2. iOS解决方法

  • 1.先对出现异常的编码字符进行替换,不用担心替换的时候把原本是加号的字符也给替换了,因为"+"号的编码结果会改变的.

  • 2.替换之后再进行解码操作

  • 3.代码如下(针对string写的一个扩展):

      ///URL Decode
      var URLDecode:String? {
      if self.count < 1 {
          return ""
      }
      //编码之后空格变成了 "+",先复原空格,再解码
      var  filterContent = self.replacingOccurrences(of: "+", with: " ")
      filterContent = filterContent.removingPercentEncoding!
      return filterContent
      }
    

3. Swift URL Encode方法

	 /// URL encode
var URLEncode:String{
    if self.count < 1 {
        return ""
    }
    let encodeStr = CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, self as? CFString,
                                                            nil,
                                                            "!*'();:@&=+$,/?%#[]" as CFString, CFStringBuiltInEncodings.UTF8.rawValue)
    return (encodeStr as String?)!
}

如果你需要的是OC版本的,可以在下方留言.

实现urlencode与urldecode的实战指南 urlencodeURL解码是网络数据传输中不可或缺的一步,它将经过urlencode函数编码后的字符串还原为原始信息,以便客户端和服务器能够正确理解传递的数据。在本章中,我们将探讨urldecode函数的设计原理,解码过程的详细步骤,以及如何使用C++来实现这一功能。在C++与Objective-C/Swift混编环境当中,不同的编程语言各具特色。C++以其强大的性能和类型安全著称,适用于需要直接控制硬件或执行资源密集型任务的应用程序。 阅读详情

相关推荐

swift-url分类解决URL里面的空格中文及其他特殊字符问题

url分类解决URL里面的空格、中文、及其他特殊字符问题

Swift学习笔记 - URL编码encode与解码decode

使用swift有一段时间了,api的变换造成了很多困扰,下面是关于url编码和解码问题的解决方案 在Swift中URL编码encode在Swift中URL编码用到的是String的方法func addingPercentEncoding(withAllowedCharacters allowedCharacters: CharacterSet) -> String?用法:let str = {url

W_C__L的博客 2万+

url参数中有+、空格、=、%、、#等特殊符号的问题解决

url出现了有+,空格,/,?,%,#,&,=等特殊符号的时候,可能在服务器端无法获得正确的参数值,如何是好?解决办法将这些字符转化成服务器可以识别的字符,对应关系如下:URL字符转义 用其它字符替代吧,或用全角的。 +    URL 中+号表示空格                                 +   空格 URL中的空格可以用+号或者编码           /   分隔目录和子目录                                     /     ?    分隔实际的URL和参数                            

Swift URL encode

前言 在WEB前端开发,服务器后台开发,或者是客户端开发中,对URL进行编码是一件很常见的事情,但是由于各个年代的RFC文档中的内容一直在变化,一些年代久远的代码就对URL编码和解码的规则和现在的有一些区别。 在1994年订制的RFC1738文档中,对字符串中的除了- _ .之外的所有非字母数字字符都替换成百分号(%)后跟两位十六进制数,十六进制数中字母必须为大写。 在2005年定...

weixin_30244681的博客 536

手把手教你用Siemens EDA破解工具搞定PADs VX2.7安装与卡死问题

本文详细介绍了如何使用Siemens EDA工具解决PADs VX2.7的安装与卡死问题。从License配置到性能调优,提供全面的解决方案,帮助工程师高效完成电子设计自动化任务。特别针对常见的卡顿现象,给出了输入法兼容性调整、图形性能优化等实用技巧。

k8l9m0n的博客 556

CTF-MISC:BUUCTF练习汇总(1-25题,不包括签到题)

解题思路:该题比较基础,wireshark打开过滤HTTP流量包,追踪HTTP流后可以看到base64密文,解密后得到jpg图片,打开图片即可看到flag,在线OCR识别即可提取出flag值。解题思路:zip压缩包解压需要密码,图片中的盲文为解压的密码,解压后得到MP3音频文件,内容为典型的摩斯密码;解题思路:由题目可以为LSB隐写,使用StegSolve打开图片查看最低有效位得到PNG信息,另存为图片后发现是二维码,扫描后即可得到flag。对应摩斯电码为:-.-. - …-. .-- .–. . …

燕麦葡萄干的博客 1万+

Swift encode URL

//swift let customAllowedSet = NSCharacterSet(charactersIn:"!*'();:@&=+$,/?%#[]").inverted let infoValue = str.addingPercentEncoding(withAllowedCharacters: customAllowedSet)! //oc N...

CQAHF的博客 950

PX4自定义uORB消息与MAVLink消息映射实战:从飞控到QGC地面站完整流程解析

本文详细解析PX4飞控中自定义uORB消息与MAVLink消息映射的完整流程,涵盖从飞控内部消息定义、MAVLink消息创建到QGC地面站接收显示的全链路实践。重点介绍如何使用mavlink inspector工具进行调试,解决版本兼容性和多实例消息处理等常见问题,为无人机开发者提供可靠的实时数据监控方案。

ll5678的博客 1069

【iOS】(swift)AFNetworking3传x-www-form-urlencode数据

使用AFNetworking框架传x-www-form-urlencode数据服务器一直返回参数不存在的错误。 let manager = AFHTTPSessionManager() manager.requestSerializer = AFHTTPRequestSerializer() manager.requestSerializer.setValue(token, forHTTPHea...

Summer_via的博客 970

STM32H743IIT6+USB3300高速HID通讯实战:从CUBEMX配置到调试避坑全记录

本文详细记录了基于STM32H743IIT6微控制器与USB3300 PHY芯片实现高速USB HID通信的完整实战过程。内容涵盖从硬件选型、STM32CubeMX工程配置(重点规避引脚映射等常见陷阱)、自定义报告描述符编写,到驱动层数据收发实现与高级调试技巧的全链路解析,旨在帮助开发者快速构建稳定、高效的嵌入式高速数据通道。

vscode5coder的博客 365

华为OD机试2025C卷真题题库目录|机考题库 + 算法考点详解

本文整理华为OD 2025C卷 机试(机考)题库,提供高频考点精析与详细题目内容,提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解

qq_45776114的博客 3992

URL 汉字转换编码1

NSString+URL.h NSString+URLEncode.h

huzhaohao的专栏 353

JMeter 中实现 100 个用户在 3 秒内并发登录

通过以上配置,你可以在 JMeter 中实现 100 个用户在 3 秒内并发登录

南开大学 | 10 年 + 软件研发与测试实战 | 现任企业质控负责人 | 专注端到端交付质量 1682

Objective-C urlEncode urlDecode

@interface NSString (stringByDecodingURLFormat) - (NSString *)stringByDecodingURLFormat; - (NSString*)stringByURLEncodingStringParameter; @end @implementation NSString(stringByDecodingURLF...

weixin_30908103的博客 129

DBT关键切片重建算法

DBT通过有限角度(通常15°~50°)扫描,获取一系列低剂量投影图,重建出三维断层图像。传统FBP在稀疏角度下会产生严重的“伪影拖尾”和层间干扰。临床诊断中,放射科医生往往只关注几层关键切片(即病灶所在层),其余层仅作参考。

AI的内部世界的博客 89

整车电检工艺流程

本文是笔者在从事汽车行业智能制造领域过程,对于整车电检工艺流程的理解与总结。

qq_40664711的博客 1万+

Swift3.0语言教程字符串与URL的数据转换与自由转换

Swift3.0语言教程字符串与URL的数据转换与自由转换 Swift3.0语言教程字符串与URL的数据转换 Swift3.0语言教程字符串与URL的数据转换与自由转换,字符串中的字符永久保存除了可以保存在文件中外,还可以保存到URL中,保存到URL中可以不用浪费设备的空间,当然也可以将URL中的内容读取出来,并转换为字符串。首先我们来看如何将字符串中的字符写入到URL中,要想实现此功能,需要...

weixin_34393428的博客 99

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

iOS应用JWT认证实战:从原理到Swift安全实现

在现代API认证领域,JSON Web Token(JWT)作为一种无状态、自包含的令牌标准,已成为构建可扩展微服务架构的核心技术。其原理基于Header、Payload、Signature三段式结构,通过数字签名确保信息完整性与来源可信,无需服务器维护会话状态,从而显著提升系统性能与扩展性。在移动开发实践中,JWT的价值在于实现安全的客户端身份验证与授权。对于iOS应用,这涉及到令牌的安全存储、自动化请求头注入以及无缝刷新机制等关键工程问题。本文将聚焦于Swift语言环境,深入探讨如何利用Keychain

weixin_30357231的博客 359

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

contrast-color() 实战指南:在 modern-web-guidance 中实现动态背景下的可读文字颜色

当徽章、按钮、导航栏或页脚这些可复用组件的背景色来自主题变量、随用户自定义色变化时,硬编码的 `color: white` 或 `color: black` 迟早会在某个主题下失效。modern-web-guidance 中的 [contrast-color 指南](https://link.gitcode.com/i/2c72cbe44a968f8b96d94bf9747fb3c7) 给出了以

gitblog_00776的博客 220

base64 和urldecod的实现

接收端在接收到 URL 编码的数据后,需要先进行反向操作,即先进行 Base64 URL 解码,然后再进行 Base64 解码,才能恢复出原始的数据。Base64 编码将原始的二进制数据按照每 6 个比特位一组进行分组,并将每个比特位的值映射到一个 64 个字符的表中,得到相应的 ASCII 字符串。需要注意的是,接收端需要将接收到的数据进行相应的解码处理,恢复出原始数据。URL 解码将 URL 编码的字符串中的 %xx 形式的编码表示转换为相应的字符,将加号 (+) 转换为空格字符 ’ '。

上善若水 982

百度ai 通用文字识别 216201错误

base64图片 资源 去掉 ‘data:image/jpg;base64,’; 且 本人使用的是jpg图片,不需要进行urlencode

sinat_37746420的博客 1483

MooTool Next macOS Native 0.2.0 深度解析:原生 HTTP 请求集合、cURL 互操作与 JSON 结构树

**导读**:本文基于开源仓库 [next-macos-native/release-notes/0.2.0.md](https://link.gitcode.com/i/8255b6b39d8be524d4ac517a8c3e3a9e) 展开,系统讲解 MooTool 原生 macOS 产品线在 0.2.0 中落地的两大能力块——HTTP 请求工具(请求集合、cURL 导入导出、查询参数、Coo

gitblog_01163的博客 470

小红书iOS开发笔试复盘:从底层原理到工程实战全解析

iOS开发岗位的笔试往往不只看API熟练度,更考验对底层机制的理解。内存管理、RunLoop运行循环、消息转发这些概念,是每个客户端开发者绕不开的基础。理解ARC下对象的生命周期、自动释放池在RunLoop中的释放时机,以及Block循环引用的破解方法,能帮助开发者写出更稳健的代码。这类知识在信息流App、图片加载、列表流畅度优化等场景中有着广泛应用,也是技术面试中区分能力的关键点。在小红书iOS开发工程师的笔试题目中,这些原理被以选择题、编程题和开放题的形式综合考察,例如手写LRU缓存、链表区间反转、大数

weixin_30256901的博客 396

string转换成URL时,如果string中有中文字符,URL无法识别

先将string中的中文字符通过utf8字符转吗 比如:         string = [string  stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 这样string转换成了URL可以识别的字符串,就可以通过         NSURL * URL = [NSURL URLWithString:st

TcD的博客 1062

UIWebView页面加载不出来的解决方案

今天在调试一个加载UIWebView页面的问题,发现无法加载,浏览器里能正常打开,错误信息为 Domain=WebKitErrorDomain Code=101 “The operation couldn’t be completed. (WebKitErrorDomain error 101.)” 原因在于进行url encode的NSString中含有未转义字符。

快乐自己 4874

iOS webView error 101 加载不出网页

背景:       因为业务需要,我要在第一个webview截获一个url,这个url有js调oc传的参数,然后在另一个webview里进行加载,这时候出现错误101。 分析:       最初的url:http://pre.mshop.sinphyutaw.com/wap/tmpl/order/buy_step1.html?ifcart=1&cart_id=364|1,365|1

星宇大前端 3524
上一篇: pod search 搜索不到库(明明已经push成功了,本地的仓库中也有)
下一篇: WKWebView js交互内存释放问题
FreshManCode
博客等级 码龄9年 8粉丝 15原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值