ASP 中網頁常會用到 GET 方式帶參數傳送資料,最近發現在使用過 Base64 編碼後在目標網頁利用 QueryString 得到的值無法完全解碼,進而發現 '+' 被轉變成為空白,進由保哥 & 黑暗執行緒文章了解如下:
URL 傳參數時 '=' , '+' 兩者會被視特殊符號,第一個用來賦值 ( 例: param=abc),而加號則被視為轉換空白符號(例: a b => a+b),之後解碼完再還原成空白。而 Base64 加密後產生的加號若沒有經過必要處理的話,在 QueryString 取值時 Base64 解密完加號也就被還原成空白 @@||| ,
解決這個問題利用 HtmlUtility.URLEncode(url) 它會自動幫忙將編碼 '+' 轉換,這樣在做 QueryString 就會得到應該看到的加號而不是空白了。
URL 傳參數時 '=' , '+' 兩者會被視特殊符號,第一個用來賦值 ( 例: param=abc),而加號則被視為轉換空白符號(例: a b => a+b),之後解碼完再還原成空白。而 Base64 加密後產生的加號若沒有經過必要處理的話,在 QueryString 取值時 Base64 解密完加號也就被還原成空白 @@||| ,
解決這個問題利用 HtmlUtility.URLEncode(url) 它會自動幫忙將編碼 '+' 轉換,這樣在做 QueryString 就會得到應該看到的加號而不是空白了。
留言
張貼留言