URL出現(xiàn)特殊字符時的處理

遇到一個問題,webview加載一段URL顯示不了,URL是正確的,后來發(fā)現(xiàn)url路勁里有個#號,打印的時候被轉(zhuǎn)義了,導(dǎo)致頁面顯示不出來,特意去網(wǎng)上找了下資料,記錄下:

stringByAddingPercentEscapesUsingEncoding
該方法只對 `#%^{}[]|\"<> 加空格共14個字符編碼,不包括”&?”等符號,
iOS9將淘汰,建議用stringByAddingPercentEncodingWithAllowedCharacters方法

stringByAddingPercentEncodingWithAllowedCharacters方法需要傳一個參數(shù)NSCharacterSet對象。
關(guān)于 NSCharacterSet 這篇 文章說的很好

NSCharacterSet舉例說明:

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

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

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

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

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

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

當(dāng)URL里有特殊字符不需要轉(zhuǎn)義時,處理方法:

NSString *unreserved = @"-._~/?#:";
NSMutableCharacterSet *allowed = [NSMutableCharacterSet alphanumericCharacterSet];
[allowed addCharactersInString:unreserved];
NSString *result = [string stringByAddingPercentEncodingWithAllowedCharacters:allowed];

參考:http://www.lxweimin.com/p/21a21866e379

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

推薦閱讀更多精彩內(nèi)容

  • 一、問題背景 相信很多ios開發(fā)者在項目中都需要用到uiwebview,那就離不開url了,一般符合網(wǎng)絡(luò)標(biāo)準(zhǔn)的...
    FuWees閱讀 7,062評論 1 6
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,845評論 25 708
  • 一、 為了增大自己能找到女朋友的可能性,小明同時向四個中文系的女生表白了。她們在面對小明勢不可擋的熱情時都表示要好...
    秦三十二閱讀 490評論 0 2
  • swift中?和!大家可能都知道是可空類型 optional ,也叫可選類型 這樣做是為了類型安全,比如聲明一個對...
    smalldu閱讀 1,535評論 1 8
  • 文/my 彩色沙漠 在豆瓣上看到有人問:工作以后能交到真正的朋友嗎? 很多人回答是:幾乎不能。 有人說,朋友在80...
    my彩色沙漠閱讀 2,057評論 4 12