iOS 9.0之后 URL 编码方法替换

2018-04-12  本文已影响136人  C_JH

最近在做网络请求的时候使用stringByAddingPercentEscapesUsingEncoding:将中文转UTF8发现报警告了。XCode提示如下:

⚠️'stringByAddingPercentEscapesUsingEncoding:' is deprecated: first deprecated in iOS 9.0 - Use -stringByAddingPercentEncodingWithAllowedCharacters: instead, which always uses the recommended UTF-8 encoding, and which encodes for a specific URL component or subcomponent since each URL component or subcomponent has different rules for what characters are valid.

很明显,iOS 9.0后stringByAddingPercentEscapesUsingEncoding:方法被弃用了,苹果提示我们使用stringByAddingPercentEncodingWithAllowedCharacters:替换它。该方法将转成UTF8格式,接受一个NSCharacterSet *类型参数,集合里面的char将被忽略。
常用的NSCharacterSet *对象如下:

URLHostAllowedCharacterSet      #"%/<>?@\^`{|}

URLFragmentAllowedCharacterSet  "#%<>[\]^`{|}

URLPasswordAllowedCharacterSet  "#%/:<>?@[\]^`{|}

URLPathAllowedCharacterSet      "#%;<>?[\]^`{|}

URLQueryAllowedCharacterSet     "#%<>[\]^`{|}

URLUserAllowedCharacterSet      "#%/:<>?@[\]^`

这里我们使用URLQueryAllowedCharacterSet,即用

// [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]

//替换为
[urlString stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];

搞定嘿嘿。

上一篇 下一篇

猜你喜欢

热点阅读