美文网首页
ios处理h5链接中包含中文字符

ios处理h5链接中包含中文字符

作者: 从容到没边的优雅 | 来源:发表于2019-03-14 16:36 被阅读0次

ios9前:

  • 编码
    一般情况下含有中文的处理可以直接采用:
    - (nullable NSString *)stringByAddingPercentEscapesUsingEncoding:(NSStringEncoding)enc
    但是,对于某些特殊字符是我们不需要转码,单独指定
resultStr = (NSString*)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,(CFStringRef)resultStr,(CFStringRef)@"!$&'()*+,-./:;=?@_~%#[]",NULL, kCFStringEncodingUTF8));
  • 解码
    - (nullable NSString *)stringByReplacingPercentEscapesUsingEncoding:(NSStringEncoding)enc

ios9后:

  • 编码
    一般情况下含有中文的处理可以直接采用:
urlStr = [urlStr stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];

但是,如果类似我们项目中h5用到vue加锚点的链接(http://xxx.com/#/newsSearch?title=哈哈&time=xxx),其中的#号也会转码,这就不是我们希望的了,可以换👇👇👇的方法:

    NSString *unreserved = @"!*'\"();:@&=+$,/?%#[]%";
    NSMutableCharacterSet *allowed = [NSMutableCharacterSet
                                      alphanumericCharacterSet];// 字母数字集合
    [allowed addCharactersInString:unreserved];
    urlStr = [urlStr stringByAddingPercentEncodingWithAllowedCharacters:allowed];
  • 解码
[urlStr stringByRemovingPercentEncoding];

相关文章

网友评论

      本文标题:ios处理h5链接中包含中文字符

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