iOS中url中文编码问题

由于url支持26个英文字母、数字和少数几个特殊字符,因此,对于url中包含非标准url的字符时,就需要对其进行编码。iOS中提供了函数stringByAddingPercentEscapesUsingEncoding对中文和一些特殊字符进行编码,但是stringByAddingPercentEscapesUsingEncoding的功能并不完善,对一些较为特殊的字符无效。而对这些字符则可以使用CFURLCreateStringByteAddingPercentEscapes函数,下面我们对其进行封装,提供一个完善的url编码函数。

NSString* encodeURL(NSString* unescapedString )
{
  NSString* escapedUrlString= (NSString*) CFURLCreateStringByAddingPercentEscapes(NULL,(CFStringRef)unescapedString, NULL,(CFStringRef)@"!*'();:@&=+$,/?%#[]", kCFStringEncodingUTF8 );

  escapedUrlString = [escapedUrlString stringByAddingPercentEscapesUsingEncoding:kCFStringEncodingUTF8];
  return [escapedUrlString autorelease];
}

需要特别注意的是encodeURL只能用来对url中的component编码,不能用来对整个url进行编码。

原文地址:https://www.cnblogs.com/CoderPlace/p/2475374.html