關於java.net.URLEncoder.encode()將空格轉成+問題

Marydon發表於2024-03-14

1.情景展示

關於java.net.URLEncoder.encode()將空格轉成+問題

如上圖所示,當我們使用jdk自帶的類對資料進行URL編碼時,空格會被轉成+。

這其實是不對的,我們知道:

空格對應url編碼是:%20,所以,jdk自帶的URLEncoder將空格轉成+是不對的。

如何解決?

2.解決方案

既然jdk自帶的URLEncoder有問題,我們就有兩種解決辦法。

一種是仍然使用它,然後將編碼結果中的+替換成:%20即可。

另一種就是使用第三方jar包中的工具類來完成編碼。

我們這裡只說第一種。

第一步:測試"+"能否正常編碼。

關於java.net.URLEncoder.encode()將空格轉成+問題

我們可以看到:

+被編碼成了:%2B,理應如此。

第二步:測試"+"和"%20"能否解碼為空格。

關於java.net.URLEncoder.encode()將空格轉成+問題

我們可以看到:

"+"和"%20"都被解碼成了空格。

有了上兩步的測試,我們知道將+替換成%20是可行的。

對編碼結果呼叫如下方法,將編碼結果中的"+"全部替換成"%20"。

String.replaceAll("\\+", "%20"));

關於java.net.URLEncoder.encode()將空格轉成+問題

3.javascript

URL編碼encodeURI()

關於java.net.URLEncoder.encode()將空格轉成+問題

我們可以看到:

空格被編碼成了%20,但是+並沒有進行編碼。

URL解碼

關於java.net.URLEncoder.encode()將空格轉成+問題

%20被解碼成了空格,+保持不變。

寫在最後

  哪位大佬如若發現文章存在紕漏之處或需要補充更多內容,歡迎留言!!!

相關推薦:

  • 個人主頁

相關文章