2017-04-10 20 views
0

我使用encodeURIComponent在JS中編碼了某些文本。原文是Javascript encodeURIComponent和Java解碼問題

weoowuyteeeee !_. 

Test could you please resubmit again? 

我在發送它之前在我的JS代碼中執行以下操作。

var text = encodeURIComponent($("#txt11").val()); 

我不應該那樣做嗎?

一旦我使用encodeURIComponent方法其編碼,就變成


weoowuyteeeee%2520!_%252C%250A%250ATest%252C%2520%2520could%2520you%2520please%2520resubmit%2520again%253F


我試圖解密一樣使用

String decodedString1 = URLDecoder.decode(myObject.getText(), "UTF-8"); 

在Java的一面,但我認爲這是輸出,而不是原文。我究竟做錯了什麼?


weoowuyteeeee%20!_%2C%0A%0ATest%2C%20%20could%20you%20please%20resubmit%20again%3F


+1

你正在對它進行雙重編碼。不要這樣做。 – SLaks

+0

更新了帖子。我手動做一個encodeURIComponent。我不應該這樣做嗎? – p0tta

+0

這完全取決於你的價值如何流動。但它以某種方式被編碼了兩次 – SLaks

回答

1

你兩次編碼數據。

最初,您已經對數據進行了編碼,之後再次編碼。

例如:讓你的文字是

的Hello World

編碼成爲

你好%20World

如果再次對其進行編碼,成爲

你好%2520World

原因從20%

%被編碼爲%25。所以空間變成%2520。

正常AJAX可以在發送到服務器端之前自動編碼您的數據。檢查第二個編碼的發生位置。

+0

更新了帖子。我手動做一個encodeURIComponent。我不應該這樣做嗎? – p0tta

+0

其實它似乎並不像我是雙重編碼。我只在JS中編碼一次,在Java中解碼。 – p0tta

+0

您可以清楚地看到編碼的數據是雙重編碼的 –