2011-04-19 77 views
1

我有這樣" <person name="peter" ><\person>"壞編碼XML

URL編碼

URLEncoder.encode(person.toString(),"UTF-8"); 

一個字符串,但編碼是不好的,因爲對空間做+ insted的的%20=他給你們可以其他值幫我?

+2

你確定它不是結束標籤嗎?應該是「」 – Blazes 2011-04-19 14:36:51

+2

究竟是什麼問題?這是一個正確的'application/x-www-form-urlencoded'類型編碼(參見http://en.wikipedia.org/wiki/Percent-encoding)。 – axtavt 2011-04-19 14:37:57

+0

你爲什麼要對URL進行編碼?你知道你在做什麼嗎? – Ingo 2011-04-19 14:37:58

回答

6

這與javaDoc中的URLEncoder完全相同。空格轉換爲+,而=爲「不安全」,因此編碼爲%3D

如果你需要一個%20代替+,只是做一些後期處理:

URLEncoder.encode(person.toString(),"UTF-8").replace("+", "%20"); 
+0

感謝幫助我只是想知道是否有其他類型的編碼 – PedroAGSantos 2011-04-19 14:52:36

0

考慮您的評論我想你想decode WebService的答案。

// the answer you receive from the webservice 
string webserviceResponse = "%3Cperson+name%3D%22peter%22%3E%3C%2Fperson%3E"; 

// turn into a "good" Xml string 
string person = URLDecoder.decode(webserviceResponse, "UTF-8"); 

會給你

<person name="peter"></person> 

person值。

+0

沒有web服務這是否需要編碼,但即使是簡單的'@'轉換爲'%40' – PedroAGSantos 2011-04-19 15:03:17

+0

@subspider我不建議做web服務需要編碼。從上面的評論中,我假設你實際上想解碼你從這個外部web服務收到的答案。 – Filburt 2011-04-19 15:22:37

+0

@subspider轉換特殊字符是URLEncoding的目的。 – Filburt 2011-04-19 15:35:36