2009-12-22 49 views
1

我有這樣一個URL: 產物//摘錄特徵=圖像+模式瀏覽器URL編碼不同Java的URLEncoder.encode

當我從瀏覽器訪問此URL

,後端接收該請求爲: 「product //節選?feature =圖片+模式」

在Web服務器端,我使用+作爲分隔符。所以功能=圖片+模式意味着有2個功能:圖片和模式

我已創建並自動化腳本(Java),它會轉到url並檢索其內容。 當我運行該腳本,後端接收該請求爲: 「產品/ B000NK6J6Q /摘錄/特徵=圖片%2Bmodes」

這是因爲我的腳本(Java)的我使用URLEncoder.encode其將+到內%2B並將此編碼的URL發送到服務器。

爲什麼Java提供的urlEncoders和瀏覽器(FF/IE)中提供的urlEncoders不同。 我如何讓他們一樣?我如何解碼他們? (URLDecoder.decode上的'+'給出空間) 另外,根據約定(和規範?)使用'+'作爲分隔符?

Prac

回答

4

你所看到的其實是正確的。請參閱Wikipedia上的Percent encoding+字符是保留字符,因此需要編碼爲%2B。此外,歷史上瀏覽器對使用MIME類型application/x-www-form-urlencoded提交的表單使用不同形式的百分比編碼,其中空格變爲+而不是%20

如果你想在URL中使用+,那麼你的分隔符應該是後端的空格。如果您想在後端使用+,那麼您在URL中將有%2B