Android App开发中,使用HttpURLConnection进行post请求时,post出的json数据含有中文在服务端有乱码。
检查post 请求必要字段都添加了:
conn.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
/* optional request header */
conn.setRequestProperty("Accept", "application/json");
conn.setRequestMethod("POST");
conn.setRequestProperty("Charset", "UTF-8");
但是 post 出的数据服务端还是显示乱码,最后跟踪发现是写 json 数据的地方出问题了,原代码如下:
if(jsonStr != null) {
DataOutputStream wr = new DataOutputStream(conn.getOutputStream());
wr.writeBytes(jsonStr);
wr.flush();
wr.close();
}
问题就出现在 DataOutputStream 上,jsonStr 本身是 utf8编码,结果 DataOutputStream writeBytes里面就出问题了。
解决办法把 DataOutputStream 去掉,直接写数据就好:
if(jsonStr != null) {
OutputStream os = conn.getOutputStream();
os.write(jsonStr.getBytes());
os.flush();
os.close();
}