字串編碼與解碼過程中加號 解碼為空格問題處理

2021-08-21 15:31:06 字數 560 閱讀 1274

字串中包含尖括號(<,>)時,從前端提交給伺服器前需要先編碼,一般使用encodeuri,encodeuricomponent這兩個方法,伺服器取到字串後再解碼,使用httputility.urldecode方法.

使用者反饋公司系統在錄入的值中如果包含了"+"時過濾不到資料,經過斷點除錯發現是httputility.urldecode方法解碼時把+替換成了空格,google一下才知道是因為編碼時使用的時encodeuri,改為encodeuricomponent方法後就解決了該問題.

w3school上的解釋為encodeuricomponent() 函式 與 encodeuri() 函式的區別之處,前者假定它的引數是 uri 的一部分(比如協議、主機名、路徑或查詢字串)。因此 encodeuricomponent() 函式將轉義用於分隔 uri 各個部分的標點符號。

對於這個問題則是,使用encodeuri編碼時,"+"未被轉義,呼叫httputility.urldecode方法解碼時"+"被解碼為空格;encodeuricomponent則把它轉義為2b%,呼叫httputility.urldecode方法解碼時2b%正確的解碼為"+".

字串編碼和解碼

計算機底層通過二進位制儲存資料,字串的儲存和展示有這樣的關係 字串 字元 二進位制儲存 在傳統的編碼方式中,如 ascii iso 8859 1,是直接將字元與二進位制數進行了對映,形成乙個字元表。這樣,儲存字串時,查詢字元表,把其中每個字元都用對應的二進位制數進行表示。當展示資料時,同樣查詢字元表...

python字串編碼解碼

為什麼需要編碼轉換 因為計算機之間的通訊使用的是byte位元組 a計算機作為傳送者,b計算機作為接受者 a str在記憶體中yiunicode表示 將字串編碼成byte位元組傳輸給b,b接收之後將byte位元組解碼成unicode顯示 s 如果當時2020 vae許嵩 解碼 s encode gbk...

字串 字元流的解碼與編碼

string s 中國 byte bytes s.getbytes gbk string ss new string bytes,gbk string ss new string bytes,0,len system.out.print ss 結果為byte型別的陣列字元流抽象基類 reader w...