Swift 4 和 PHP 中的"百分号编码"

如果一个 URL 或字符串中包含了空格、中文等特殊字符,我们需要将其转义为“百分号表示法”再进行传输,这个过程就是 URL Encoding。

接收方收到请求或收到某个字符串,则需要将其中的百分号转义符进行解码,这个过程就是 URL Decoding。

W3School 关于 URL Encoding/Decoding 的介绍:https://www.w3schools.com/tags/ref_urlencode.asp

Swift 4

Swift 4 中将一个字符串进行百分号编码的方式很简单:调用 addingPercentEncoding 函数即可:

let str = "http://127.0.0.1/signup.php?realname=\(realname)"
let url = str.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)!

将一个字符串解码:

let realname = str.removingPercentEncoding!

PHP

编码使用 rawurlencode 函数:http://php.net/manual/en/function.rawurlencode.php

解码使用 rawurldecode 函数:http://php.net/manual/en/function.rawurldecode.php

切记不要使用 urlencode 函数https://stackoverflow.com/questions/996139/urlencode-vs-rawurlencode

另外,如果从 $_GET$_POST 中获取参数,则 PHP 已经对这些字符串做了解码处理。