【记录】对接第三方,http协议接口,上传数据
【问题】基于HttpUrlConnection的post请求,json数据中包含中文,gson生成字符串时正常,抓包发现参数中的中文乱码
1. 利用DataOutputStream的writeBytes()方法,出现中文乱码。
dos.writeBytes(String s)
2. 将writeBytes(String s)替换为
dos.writeBytes(String s)
//替换为下面的
dos.write(s.getBytes());
3. 原因
1)writeBytes源码
将java的char,强转为byte。java中char为2字节,才能展示中文。强转为1个字节的byte后,丢失数据,就变为了乱码
public final void writeBytes(String s) throws IOException {
int len = s.length();
for (int i = 0 ; i < len ; i++) {
out.write((byte)s.charAt(i));
}
incCount(len);
}