一: Encode
NSURL里不能包含中文.需要用utf-8编码转一下.才能使用
方法一:
如下 "我会法光哦" encode之后就是"%E6%88%91%E4%BC%9A%E5%8F%91%E5%85%89%E5%93%A6"
[@"bilibili://pegasus/?name=我会发光哦" stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
// 结果: bilibili://pegasus/?name=%E6%88%91%E4%BC%9A%E5%8F%91%E5%85%89%E5%93%A6
方法二:
在iOS 9之后苹果推荐使用下面这个方法.功能是一样的.
[@"bilibili://pegasus/?name=我会发光哦" stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet characterSetWithCharactersInString:@"`#%^{}\"[]|\\<> "].invertedSet]
// 结果: bilibili://pegasus/?name=%E6%88%91%E4%BC%9A%E5%8F%91%E5%85%89%E5%93%A6
方法三:
上面两种系统方法在encode如: / ! * 这些字符时是忽略的.
可以使用CoreFoundation的方法来encode
二: Decode
相当于把字符串里的"%"去掉.
如下%23 decode之后就是 "#"
%54 decode之后就是 "T"
三.字符串转数组/字典
注:
URL为什么要编码?
只是为了符合url的规范而已。因为在标准的url规范中 中文 / 空格 / 特殊字符是不允许出现在url中的。
譬如:你要传的字符串数据是name=value1&value2 这里的value1&value2是一个字符串 但是服务器只会将lisi识别出来.
此时如果把value1&value2进行编码变成name=value1%26value2.服务器就可以将value1%26value2都识别出来.然后进行解码即可.
这里的%26就是 & (在ASCII码表中&对应26. %作为编码的分隔符)
好用的在线编解码工具: https://meyerweb.com/eric/tools/dencoder/