2013-08-22 87 views
0

我將查詢發送到一個php文件,以獲得一個xml:編碼€ - 標號爲HTML

www.mydomain.com/order.php?item=€15,- shoes 

對於HTML我需要€ - 標號爲:&êü,R 0;

我想:

try { 
      query=URLEncoder.encode(query,"UTF-8"); 
     } catch (UnsupportedEncodingException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 

     } 

和後URL = www.mydomain.com/order.php?query

問題與在於=符號也變得編碼,我也得到了&êü,R 0的錯誤; (中, - 符號):

Caused by: java.lang.IllegalArgumentException: Illegal character in query at index 

如何編碼這個查詢?

回答

1

你不想編碼你的整個查詢字符串。

在構造查詢字符串之前對每個參數值進行編碼。

如:

query = "item=" + URLEncoder.encode("€15") 

另外,如果你想&euro這不是URL編碼,但HTML逃脫。改爲使用網址編碼。

1

我會用另一個字符替換€符號並將其再次轉換回來。 €符號不是ASCII。

+0

認爲它是擴展ASCII? (%80) – Pixelmonster

0

我使用類似代碼:

String query="www.mydomain.com/order.php?item=€15,- shoes"; 


     try { 
      query=URLEncoder.encode(query,"UTF-8"); 
      System.out.println(query); 

      String decoQuery=URLDecoder.decode(query); 
      System.out.println(decoQuery); 
     } catch (UnsupportedEncodingException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 

     } 

輸出:

www.mydomain.com%2Forder.php%3Fitem%3D%E2%82%AC15%2C-+shoes 
www.mydomain.com/order.php?item=€15,- shoes 

你確定你有正確的編碼文件爲UTF-8爲您的IDE下的項目。 即eclipse:右鍵項目==>資源==>文本文件編碼==>把它放到UTF-8中