解決URL中文亂碼問題

在做一個(gè)HTTPS連接時(shí), 要客戶端合成一段HTTPS地址

如果地址含中文的話程序會(huì)crash, 檢查發(fā)現(xiàn)原來(lái)是中文沒有轉(zhuǎn)碼的原因

在NSString庫(kù)里面找到了下面兩個(gè)方法

- (NSString *)stringByAddingPercentEscapesUsingEncoding:(NSStringEncoding)encoding
- (NSString *)stringByReplacingPercentEscapesUsingEncoding:(NSStringEncoding)encoding

試了下, 有效

NSString* string1 = @"https://www.cloudsafe.com/文件夾";

NSString* string2 = [string1 stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSString* string3 = [string2 stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

NSString* string4 = [string2 stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSString* string5 = [string3 stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

NSString* string6 = [string4 stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSString* string7 = [string5 stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

輸出string1-7結(jié)果如下

string1:https://www.cloudsafe.com/文件夾

string2:https://www.cloudsafe.com/%E6%96%87%E4%BB%B6%E5%A4%B9
string3:https://www.cloudsafe.com/%25E6%2596%2587%25E4%25BB%25B6%25E5%25A4%25B9

string4:https://www.cloudsafe.com/文件夾
string5:https://www.cloudsafe.com/%E6%96%87%E4%BB%B6%E5%A4%B9

string6:https://www.cloudsafe.com/文件夾
string7:https://www.cloudsafe.com/文件夾

簡(jiǎn)單說(shuō)下我是如何使用的:
在合成URL后, 給整個(gè)String轉(zhuǎn)碼兩次

NSMutableString *address = [[NSMutableString stringWithString:SetNiChengStringWithoutUserNameAndNiCheng] mutableCopy];
    address = [[address stringByAppendingString:app.name] mutableCopy];
    address = [[address stringByAppendingString:@"/"] mutableCopy];
    address = [[address stringByAppendingString:_nameTextField.text] mutableCopy];
    address = [[address stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding] mutableCopy];
    address = [[address stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding] mutableCopy];

服務(wù)器端如何只是簡(jiǎn)單存儲(chǔ), 服務(wù)器接收數(shù)據(jù)后可以不用轉(zhuǎn)碼成中文

當(dāng)客戶端請(qǐng)求這部分?jǐn)?shù)據(jù)時(shí), 由客戶端自己解碼就好了

獲取到字串后解碼一次就可以正常顯示為中文了:

str = [str stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
``
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容