iOS 特殊字符处理stringByAddingPercentEncodingWithAllowedCharacters
2024-04-10 12:00:51  阅读数 2785

当网址中含有中文字符的时候我们无法直接使用,需要把网址的字符串编码后再转为URL,由于url支持26个英文字母、数字和少数几个特殊字符,因此,对于url包含非保准url的字符的时候,就需要对其进行编码。
iOS中提供stringByAddingPercentEscapesUsingEncoding对中文和一些特殊字符进行编码。
但是stringByAddingPercentEscapesUsingEncoding 的功能并不完善,对一些较为特殊的字符无效,对这些字符可以使用 CFURLCreateStringByteAddingPercentEscapes
解码使用

-(NSString *)stringByReplacingPercentEscapesUsingEncoding:(NSStringEncoding)encoding
不过编码这个方法从2.0支持到 9.0后不支持了,建议用
stringByAddingPercentEncodingWithAllowedCharacters 替换

NSString *urlStr = [urlStr stringByAddingPercentEncodingWithAllowedCharacters:[[NSCharacterSet characterSetWithCharactersInString:@"?!@#$^&%*+,:;='\"`<>()[]{}/\\| "] invertedSet]];