我将查询发送到php文件以便接收xml:
www.mydomain.com/order.php?item=€15,- shoes
对于HTML,我需要将€-sign作为:&你好;
我试过了:
try {
query=URLEncoder.encode(query,"UTF-8");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
POST-url = www.mydomain.com/order.php?query
问题在于=符号也会被编码,我得到&的错误。你好(the; -sign):
Caused by: java.lang.IllegalArgumentException: Illegal character in query at index
如何编码此查询?
答案 0 :(得分:1)
我会用不同的字符替换€符号并再次将其转换回来。 €符号不是ASCII。
答案 1 :(得分:1)
您不想对整个查询字符串进行编码。
在构造查询字符串之前对每个参数值进行编码。
例如:
query = "item=" + URLEncoder.encode("€15")
此外,如果您希望&euro
不是URL编码但HTML已转义。改为使用URL编码。
答案 2 :(得分: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
您确定在IDE下项目的UTF-8编码文件正确吗? 即eclipse:项目上的右键==>资源==>文本文件编码==>把它写成UTF-8