webview中url特殊字符處理

url中經(jīng)常出現(xiàn)中文,想到最直接的辦法是把url轉(zhuǎn)碼,如下:

NSString *urlString = @"192.168.1.1/app/index.html#/serviceCase/制造業(yè)";

urlString = [urlString stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLFragmentAllowedCharacterSet];

NSCharacterSet 中不同方法 處理的特殊字符不一樣:

URLFragmentAllowedCharacterSet "#%<>[\]^`{|}

?URLHostAllowedCharacterSet? ? ? "#%/<>?@\^`{|}

?URLPasswordAllowedCharacterSet? "#%/:<>?@[\]^`{|}

?URLPathAllowedCharacterSet? ? ? "#%;<>?[\]^`{|}

URLQueryAllowedCharacterSet? ? "#%<>[\]^`{|}

?URLUserAllowedCharacterSet? ? ? "#%/:<>?@[\]^`

iOS 9.0以前用這個方法:stringByAddingPercentEscapesUsingEncoding: ?。

可能項(xiàng)目中用這種方法轉(zhuǎn)碼了 發(fā)現(xiàn)webview還是加載不出來,網(wǎng)上找個幾種方法還是不行,怎么辦呢,這時候你就要搞清楚 系統(tǒng)的轉(zhuǎn)碼方法到底轉(zhuǎn)了些什么東西,上面寫的很清楚,不管你是用?URLFragmentAllowedCharacterSet還是URLPasswordAllowedCharacterSet,還是其他等等,#號都當(dāng)著特殊字符轉(zhuǎn)碼了,而你的網(wǎng)頁中#可能是個錨點(diǎn)不需要轉(zhuǎn)碼,不需要轉(zhuǎn)碼的你轉(zhuǎn)了網(wǎng)頁肯定加載不出來。遇到這種情況要和前端工程師協(xié)商,如果是因?yàn)橹形木幋a不支持那只轉(zhuǎn)中文就行了,如下:

NSString *?parm = [@"制造業(yè)"?stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLFragmentAllowedCharacterSet]];

NSString *link = [NSString stringWithFormat:@"192.168.1.1/app/index.html#/serviceCase/%@",parm];

這樣寫就可以。在你的項(xiàng)目中可能不止是#,/ %等有可能出現(xiàn),首先搞清楚具體哪些是要轉(zhuǎn),哪些不要轉(zhuǎn)。目的明確了,對癥下藥。

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

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

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