美文网首页
iOS UrlEnCode加密需要注意

iOS UrlEnCode加密需要注意

作者: 为了自由的白菜 | 来源:发表于2019-12-30 12:09 被阅读0次

    今天跟安卓的同学对接一个问题, 发现了一个及其坑爹的BUG, 安卓在进行UrlEncode编码时, 将空格转义为了"+", 但是iOS这边进行UrlEncode编码时, 是将空格转义为"%20", 这不坑爹的嘛, 在对接的时候两边数据对不上
    在Stack Overflow上找到了解释URL encoding the space character: + or %20?

    简单来说就是:%20是比较老一点的写法,现在的做法是:url中的“?”前的空格要转义成“%20”,“?”之后的空格要转义成“+”!

    而Jave系统中自带的方法是这么做的, 但是在iOS系统中调用[str stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]]; 是将空格转义为了"%20"

    经测试后


    image.png

    后来这边的处理方法为
    特殊字符使用[str stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet characterSetWithCharactersInString:@"#%<>[\]^`{|}"]+"].invertedSet];
    这个方法去进行UrlEnCode转义,

    然后iOS端在解析之前, 先将未转义的字符串中的"+"替换为" "空格

    然后再进行[str stringByRemovingPercentEncoding];iOS端就可以正常解析使用, 暂时只能想到这个方法

    相关文章

      网友评论

          本文标题:iOS UrlEnCode加密需要注意

          本文链接:https://www.haomeiwen.com/subject/upopoctx.html