最近在做微信、QQ分享网页链接时遇到一个很坑的问题,iOS9后url的encode 方法对特殊字符 ?!@#$^&%*+,:;='"`<>()[]{}/\| 的处理好像没有以前完美了,在调起QQ分享url时经常报参数错误,仔细排查后发现是特殊字符影响了QQ的调起
1、替换url中的特定字符
字符 - URL编码值
空格 - %20
" - %22
# - %23
% - %25
& - %26
( - %28
) - %29
+ - %2B
, - %2C
/ - %2F
: - %3A
; - %3B
< - %3C
= - %3D
> - %3E
? - %3F
@ - %40
\ - %5C
| - %7C
reportName = [reportName stringByReplacingOccurrencesOfString:@"+" withString:@"%2B"];
第一种方法比较low,也比较繁琐,需要遍历替换,后来又找了另外一个处理方式
2、
reportName = [reportName stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet characterSetWithCharactersInString:@"?!@#$^&%*+,:;='\"`<>()[]{}/\\| "].invertedSet];