发现NSString类中有内置的方法可以实现。他们分别是:
- (NSString *)stringByAddingPercentEscapesUsingEncoding:(NSStringEncoding)encoding
- (NSString *)stringByReplacingPercentEscapesUsingEncoding:(NSStringEncoding)encoding
只要传入相应的编码即可以进行编码和解码了,不过此方法是对整个Url进行编码的所以如果有Query String中带有&?
示例:
[cpp] view plain copy
1. NSString* string1 = @"https://www.cloudsafe.com/文件夹";
2.
3. NSString* string2 = [string1 stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
4. NSString* string3 = [string2 stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
5.
6. NSString* string4 = [string2 stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
7. NSString* string5 = [string3 stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
8.
9. NSString* string6 = [string4 stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
10. NSString* string7 = [string5 stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
11.
12. 输出结果: string5 & 6 重复编码encode
13.
14. string1:https://www.cloudsafe.com/文件夹
15.
16. string2:https://www.cloudsafe.com/%E6%96%87%E4%BB%B6%E5%A4%B9
17. string3:https://www.cloudsafe.com/%25E6%2596%2587%25E4%25BB%25B6%25E5%25A4%25B9
18.
19. string4:https://www.cloudsafe.com/文件夹
20. string5:https://www.cloudsafe.com/%E6%96%87%E4%BB%B6%E5%A4%B9
21.
22. string6:https://www.cloudsafe.com/文件夹
23. string7:https://www.cloudsafe.com/文件夹