在APP开发的过程中,经常需要传一些带有汉字的参数,这时候我们通常会调用
stringByAddingPercentEscapesUsingEncoding
这个api或者调用Core Foundation库的api来进行编码,现在这些api已经被废弃掉了,苹果推荐我们使用
.m
stringByAddingPercentEncodingWithAllowedCharacters这个api来进行编码,这个api需要传一个
NSCharacterSet的参数,这个功能感觉变得强大了不少...这个参数怎么设置,点这儿有详细的介绍.
基于这个API,写了一个类别来进行url的编码和解码,效果和以前的stringByAddingPercentEscapesUsingEncoding一样.
贴代码~~
.h
#import <Foundation/Foundation.h>
@interface NSString (HJLURLEncoding)
- (NSString *)EncodedUrlString;
- (NSString *)DecodedUrlString;
@en
.m
#import "NSString+HJLURLEncoding.h"
@implementation NSString (HJLURLEncoding)
/**
* 给url字符串进行utf-8编码
*
* @return 编码后的字符串
*/
- (NSString *)EncodedUrlString
{
NSString *CharacterSet = @"!*();+$,%#[] ";
NSCharacterSet *allowedCharacters = [[NSCharacterSet characterSetWithCharactersInString:CharacterSet] invertedSet];
NSString *encodedUrlString = [self stringByAddingPercentEncodingWithAllowedCharacters:allowedCharacters];
[encodedUrlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
return encodedUrlString;
}
/**
* 给url字符串解码
*
* @return 解码后的字符串
*/
- (NSString *)DecodedUrlString
{
return [self stringByRemovingPercentEncoding];
}
@end