NSUrl 還有中文時候的編碼

[NSURLURLWithString:urlString]生成URL對象時,iOS客戶端不能正確進行網絡請求,網上找到的URLEncode方法又不能完全解決問題.
方法1:

NSString* encodedString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

方法2:

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

這兩種方法當urlString里含有中文時URL編碼是正確的,但是如果其中含有已轉義的%等符號時,又會再次轉義而導致錯誤.

所以在此推薦使用以下方法:

+ (NSString *)encodeUrlStr:(NSString *)urlStr{
    NSString *encodedString = (NSString *)
    
    CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,
                                                              
                                                              (CFStringRef)urlStr,
                                                              
                                                              (CFStringRef)@"!$&'()*+,-./:;=?@_~%#[]",
                                                              
                                                              NULL,
                                                              
                                                              kCFStringEncodingUTF8));

    return encodedString;
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容