原文地址:https://blog.csdn.net/zhanglei5415/article/details/131434931 ## 一、問題 當對含有中文的url字元串,進行NSURL對象包裝時,是不能被識別的。 不會得到期望的NSURL對象,而是返回一個nil 值 ; ```objectiv ...
原文地址:https://blog.csdn.net/zhanglei5415/article/details/131434931
一、問題
當對含有中文的url字元串,進行NSURL對象包裝時,是不能被識別的。 不會得到期望的NSURL對象,而是返回一個nil 值 ;
NSString *urlString = @"http://www.aa.com/download/文件.docx";
NSURL *url = [NSURL urlWithString:urlString];
//url is nil
要解決這個問題就需要對包含中文字元的地址先進行url encode編碼。 網上有很多解決的方法,但都是老版本的方法,現在已被iOS作廢了,所以有必要更新一下代碼
二、解決辦法
2.1 中文編碼
在對含有中文的url字元串進行NSURL對象包裝時, 先進行中文編碼.
//原包含中文字元的url地址
NSString *urlString = @"http://www.aa.com/download/文件.docx";
//對中文字元編碼
NSString *encodedString = [urlString stringByAddingPercentEncodingWithAllowedCharacters:
[NSCharacterSet characterSetWithCharactersInString:@"`#%^{}\"[]|\\<> "].invertedSet];
NSLog(@"origin url: %@, encoded url:%@", urlString, encodedString);
//origin url: http://www.aa.com/download/文件.docx,
//encoded url:http://www.aa.com/download/%E6%96%87%E4%BB%B6.docx
解碼及更多內容請參考:https://blog.csdn.net/zhanglei5415/article/details/131434931
本文來自博客園,作者:reyzhang,轉載請註明原文鏈接:https://www.cnblogs.com/reyzhang/p/17544468.html