iOS中文网址路径转换

1.在网址路径里出现中文,使用

方法1:url编码

NSString* encodedString = [urlStringstringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

url解码

NSString *str = [ss stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

方法2:

NSString * encodedString = (NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,(CFStringRef)urlString,NULL,NULL,kCFStringEncodingUTF8);

如果其中含有已转义的%等符号时,又会再次转义而导致错误,使用方法:

NSString *encodedString = (NSString *)
    CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,
                                                              (CFStringRef)self,
                                                              NULL,
                                                              CFSTR("!*'();:@&=+$,/?%#[]"),
                                                              kCFStringEncodingUTF8));
    return encodedString;

此时encodedString就是转换后的网址。

2.使用类别的方式来使程序便得简洁

<1>.定义类别,如名字为URL(创建工程为类别,继承自NSString,命名为URL,会生成名字为NSString+URL的.h和.m文件)

<2>.在.h文件中创建方法 - (NSString *)urlEncodedString;

<3>.在.m文件中实现(ARC)

- (NSString *)urlEncodedString {
    NSString *encodedString = (NSString *)
    CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,
                                                              (CFStringRef)self,
                                                              NULL,
                                                              CFSTR("!*'();:@&=+$,/?%#[]"),
                                                              kCFStringEncodingUTF8));
    return encodedString;
}

若是MRC,可使用

 

- (NSString *)urlEncodedString {
    NSString *encodedString = (NSString *)
    CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,
                                            (CFStringRef)self,
                                            NULL,
                                            CFSTR("!*'();:@&=+$,/?%#[]"),kCFStringEncodingUTF8);
    return encodedString;
}

 

 

<4>.调用时直接使用

NSString *urlString = [urlStr urlEncodedString];

生成的urlString就是转换后的地址

在头文件#import "NSString+URL.h"即可调用

原文地址:https://www.cnblogs.com/xiaochaozi/p/3696291.html