美文网首页
webview中url特殊字符处理

webview中url特殊字符处理

作者: 雪花啤酒雪花 | 来源:发表于2018-11-29 12:18 被阅读0次

    url中经常出现中文,想到最直接的办法是把url转码,如下:

    NSString *urlString = @"192.168.1.1/app/index.html#/serviceCase/制造业";

    urlString = [urlString stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLFragmentAllowedCharacterSet];

    NSCharacterSet 中不同方法 处理的特殊字符不一样:

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

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

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

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

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

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

    iOS 9.0以前用这个方法:stringByAddingPercentEscapesUsingEncoding:  。

    可能项目中用这种方法转码了 发现webview还是加载不出来,网上找个几种方法还是不行,怎么办呢,这时候你就要搞清楚 系统的转码方法到底转了些什么东西,上面写的很清楚,不管你是用 URLFragmentAllowedCharacterSet还是URLPasswordAllowedCharacterSet,还是其他等等,#号都当着特殊字符转码了,而你的网页中#可能是个锚点不需要转码,不需要转码的你转了网页肯定加载不出来。遇到这种情况要和前端工程师协商,如果是因为中文编码不支持那只转中文就行了,如下:

    NSString * parm = [@"制造业" stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLFragmentAllowedCharacterSet]];

    NSString *link = [NSString stringWithFormat:@"192.168.1.1/app/index.html#/serviceCase/%@",parm];

    这样写就可以。在你的项目中可能不止是#,/ %等有可能出现,首先搞清楚具体哪些是要转,哪些不要转。目的明确了,对症下药。

    相关文章

      网友评论

          本文标题:webview中url特殊字符处理

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