url中文转码
2014-01-10 00:00
155 查看
摘要: 转自网络
调用接口参数含有中文字符,调用出错。谷歌百度了半天关于IOS转码的,都没有效果。
后来在官方文档找到了解决方法:
CFURLCreateStringByAddingPercentEscapes
Discussion
The characters escaped are all characters that are not legal URL characters (based on RFC 3986), plus any characters inlegalURLCharactersToBeEscaped, less any characters in charactersToLeaveUnescaped. To simply correct any non-URL characters in an otherwise correct URL string, pass
It may be difficult to use this function to "clean up" unescaped or partially escaped URL strings where sequences are unpredictable and you cannot specify charactersToLeaveUnescaped. Instead, you can "pre-process" a URL string using CFURLCreateStringByReplacingPercentEscapesUsingEncodingthen add the escape characters using CFURLCreateStringByAddingPercentEscapes, as shown in the following code fragment.
英文我不是很懂,不过凭着直觉就是它了。拿过来处理一下:
[plain] view plaincopy
NSString *urlString = @"http://test.com/root?&city=中国";
//把NSString 转 CFStringRef
CFStringRef originalURLString = (__bridge CFStringRef)urlString;
CFStringRef preprocessedString =
CFURLCreateStringByReplacingPercentEsc
3ff0
apesUsingEncoding(kCFAllocatorDefault, originalURLString, CFSTR(""), kCFStringEncodingUTF8);
CFStringRef urlString1 =
CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, preprocessedString, NULL, NULL, kCFStringEncodingUTF8);
CFURLRef url = CFURLCreateWithString(kCFAllocatorDefault, urlString1, NULL);
//CFStringRef 转 NSString
urlString = (__bridge NSString*) url;
//转换后,发现并非NSString 而是NSURL 这很奇怪 所以再转一次
if ([urlString isKindOfClass:[NSURL class]]) {
NSURL *url2 = (__bridge NSURL*) url;;
urlString = [url2 absoluteString];
}
NSLog(@"nsstring:%@",urlString);
大概就这样。搞定。
调用接口参数含有中文字符,调用出错。谷歌百度了半天关于IOS转码的,都没有效果。
后来在官方文档找到了解决方法:
CFURLCreateStringByAddingPercentEscapes
Discussion
The characters escaped are all characters that are not legal URL characters (based on RFC 3986), plus any characters inlegalURLCharactersToBeEscaped, less any characters in charactersToLeaveUnescaped. To simply correct any non-URL characters in an otherwise correct URL string, pass
NULLfor the allocator, charactersToLeaveEscaped, and legalURLCharactersToBeEscaped parameters, and
kCFStringEncodingUTF8as the encoding parameter.
It may be difficult to use this function to "clean up" unescaped or partially escaped URL strings where sequences are unpredictable and you cannot specify charactersToLeaveUnescaped. Instead, you can "pre-process" a URL string using CFURLCreateStringByReplacingPercentEscapesUsingEncodingthen add the escape characters using CFURLCreateStringByAddingPercentEscapes, as shown in the following code fragment.
CFStringRef originalURLString = CFSTR("http://online.store.com/storefront/?request=get-document&doi=10.1175%2F1520-0426(2005)014%3C1157:DODADSS%3E2.0.CO%3B2"); |
CFStringRef preprocessedString = |
CFURLCreateStringByReplacingPercentEscapesUsingEncoding(kCFAllocatorDefault, originalURLString, CFSTR(""), kCFStringEncodingUTF8); |
CFStringRef urlString = |
CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, preprocessedString, NULL, NULL, kCFStringEncodingUTF8); |
url = CFURLCreateWithString(kCFAllocatorDefault, urlString, NULL); |
[plain] view plaincopy
NSString *urlString = @"http://test.com/root?&city=中国";
//把NSString 转 CFStringRef
CFStringRef originalURLString = (__bridge CFStringRef)urlString;
CFStringRef preprocessedString =
CFURLCreateStringByReplacingPercentEsc
3ff0
apesUsingEncoding(kCFAllocatorDefault, originalURLString, CFSTR(""), kCFStringEncodingUTF8);
CFStringRef urlString1 =
CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, preprocessedString, NULL, NULL, kCFStringEncodingUTF8);
CFURLRef url = CFURLCreateWithString(kCFAllocatorDefault, urlString1, NULL);
//CFStringRef 转 NSString
urlString = (__bridge NSString*) url;
//转换后,发现并非NSString 而是NSURL 这很奇怪 所以再转一次
if ([urlString isKindOfClass:[NSURL class]]) {
NSURL *url2 = (__bridge NSURL*) url;;
urlString = [url2 absoluteString];
}
NSLog(@"nsstring:%@",urlString);
大概就这样。搞定。
相关文章推荐
- java 网络url需要转码(url中文乱码的问题)
- url字符串中含中文的转码方法
- url传中文,转码
- url传中文,转码
- url中传递中文参数时的转码与解码
- url 中文转码
- 【Python开发】Url中文字符时记得转码edcode("utf-8")
- IOS的URL中文转码
- 网络爬虫之Url含有中文如何转码
- JSP 中js传递和解析URL参数以及中文转码和解码
- IOS URL带中文报错解决方法 中文转码
- iOS开发网络篇 一一 请求路径(URL)中文转码问题
- String fname="%e6%8e%88%e6%9d%832"; url转码成中文
- Magento中文字符URL错误的修复(Iconv转码问题)
- URL 中中文转码
- iOS中文参数的URL地址URLEncode转码
- UI网络笔记(六):UI网络之去掉非法字符和将URL中的中文字符进行转码
- url 中文转码
- url使用get方式提交时,js中文转码