特殊字符会导致REST Web服务通信出现问题

时间:2011-04-28 13:31:58

标签: android json rest special-characters

我正在尝试将JSON对象发布到Android应用程序的REST Web服务中。一切正常,直到我添加å,ä,ö等特殊字符。

JSONObject absenceObject = new JSONObject();
absenceObject.put(INFO_DESCRIPTION, "åka pendeltåg");
StringEntity entity = new StringEntity(absenceObject.toString());
httpPost.setEntity(entity);
httpPost.setHeader("Accept", "application/json";character);
httpPost.setHeader("Content-type", "application/json;charset=UTF-8");
HttpResponse response = httpclient.execute(httpPost);

如果我打印absenceObject.toString()并将结果复制到常规的休息客户端,它也能正常工作。

4 个答案:

答案 0 :(得分:9)

尝试在StringEntity构造函数中指定所需的字符集:

StringEntity entity = new StringEntity(absenceObject.toString(), "UTF-8");

答案 1 :(得分:0)

如果你控制管道的两端,你可以编码REST文本,如下所示Encoding/decoding REST path parameters

答案 2 :(得分:0)

回复:马克的回应

  

尝试在StringEntity构造函数中指定所需的字符集:

     

StringEntity entity = new StringEntity(absenceObject.toString(), "UTF-8");

请注意,在构造函数之后设置charset对我不起作用,即

entity.setContentEncoding("UTF-8");

我必须像马克所说的那样做并在构造函数中设置它。

迈克尔

答案 3 :(得分:0)

byte[] buf = body.getBytes(HTTP.UTF_8);
wr.write(buf, 0, buf.length);

试试这个它会起作用。