NSString Encoding

一: Encode

NSURL里不能包含中文.需要用utf-8编码转一下.才能使用

1

方法一:

如下 "我会法光哦" 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

image.png

二: Decode

相当于把字符串里的"%"去掉.

如下%23 decode之后就是 "#"

%54 decode之后就是 "T"

image.png

三.字符串转数组/字典

image.png
image.png

注:

URL为什么要编码?

image.png

只是为了符合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/

推荐阅读更多精彩内容