當我們在進行網絡請求時,比如下載文件,用原生的網絡請求或者第三方網絡請求框架的時候,若要從response的header里面取filename,我們會發現,如果訪問的url里面帶有中文,拿到的filename會出現亂碼。
這是因為response 把 Content-Disposition 中的 filename 當成 ASCII 處理了.
嘗試后,解決辦法如下:
NSString *fileName,*str;
const char *byte = NULL;
fileName = [response suggestedFilename];
byte = [fileName cStringUsingEncoding:NSISOLatin1StringEncoding];
NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);
str = [[NSString alloc] initWithCString:byte encoding:
enc]; //如是utf,此處應改為NSUTF8StringEncoding