2013-03-11 50 views
-1

我有一些Java代碼需要一個字符串並將space轉換爲+。但是當我的程序讀取該字符串時,它會將+轉換爲%20URLEncoder將空格編碼爲加號,然後編碼爲%20。如何保持一致性?

有什麼辦法讓我保持一致,以便它:

  1. 要麼直接轉換到space%20,或
  2. 隱而不宣t convert the + to%20`

這裏我的代碼是這樣的:

import java.net.URLEncoder; 
... 
String fileNameEncoded = URLEncoder.encode(filename); 

因此,如果filenamefoo bar.html,第一遍會給我foo+bar.html,第二遍會給我foo%20bar.html

+2

第二次通過什麼?什麼方案?什麼是java代碼?嘗試從願意幫助你但不瞭解你的環境,你的目的,追蹤輸出等的人的立場來看你自己的問題。「垃圾進入,垃​​圾出來」適用於詢問有關技術的問題事項。如果可能的話,看起來可能是這種情況,編寫一個小程序來說明你在說什麼,因爲一個小的運行程序通常是毫不含糊的,至少。 – arcy 2013-03-11 20:28:01

+1

你爲什麼要對一個字符串進行兩次url編碼。一次傳球就足夠了。如果你想做兩次,那麼解碼兩次。 – 2013-03-11 20:29:52

+0

對不起,但我不明白你需要什麼其他信息。如果你只是簡單地將上面提供的代碼作爲'foo bar.html'的示例輸入作爲'filename'運行,那麼你就明白我在說什麼了。 – FilmiHero 2013-03-11 20:32:19

回答

2

爲了理解「空間直接到%20」我們應該首先理解爲什麼我們要編碼一個URL,答案是因爲URL中有不允許URL格式的字符,如「&」,「=」 ,「」等,因爲它們會導致錯誤解析URL。 由於這個原因,URLEncoder將這些字符替換爲一些URL格式允許的常規其他字符。並作爲URL解析器將這些常規字符替換爲「&」,「=」,「」等。

+0

謝謝。看起來我並不完全理解'URLEncoder.encode'方法背後的概念。 – FilmiHero 2013-03-11 21:29:09

相關問題