`
xixinfei
  • 浏览: 410957 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

HTTPURLCONNECTION传递中文乱码

 
阅读更多

HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();

urlConn.connect();

DataOutputStream out = new DataOutputStream(urlConn.getOutputStream());

String content = "传递中文的问题";

out.writeBytes(content);

out.flush();

out.close();

urlConn.disconnect();

依照上面的方式传递中文,服务器得到的一定是一堆乱码,原因:out.writeBytes(content);该语句在转中文时候,已经变成乱码

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);
}
因 为java里的char类型是16位的,一个char可以存储一个中文字符,在将其转换为 byte后高8位会丢失,这样就无法将中文字符完整的输出到输出流中。所以在可能有中文字符输出的地方最好先将其转换为字节数组,然后再通过write写 入流,目前尝试过这种方法:把上面链接代码中的out.writeBytes(content);替换为 out.write(content.getBytes());先把数据转成BYTE在写入流,执行成功,服务器接收正确的中文内容,

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics