在POST中为HTML编码€-sign

时间:2013-08-22 00:57:42

标签: android post http-post url-encoding

我将查询发送到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 

如何编码此查询?

3 个答案:

答案 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