ios处理h5链接中包含中文字符
2019-03-14 本文已影响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];