2013-08-22 43 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中