美文网首页
HttpURLConnection部分中文乱码

HttpURLConnection部分中文乱码

作者: Analyas | 来源:发表于2020-02-08 22:46 被阅读0次

最近有个项目在使用HttpURLConnection进行网络请求,返回结果出现了部分中文乱码的情况,而且只是一部分,很郁闷,最后慢慢分析,终于找到原因!!

1. 之前的写法

主要原因是因为边读服务器数据边将byte转成utf8,utf8编码是3个字节对应一个字符,但万一只读了一个字节或者不为3的倍数怎么办?这样强转编码就会导致乱码出现,比如出现“?”等,正确的做法是先缓存完所有字节,再一次性转换编码!

//获取请求数据
InputStream inputStream = httpURLConnection.getInputStream();
int count = 0;
StringBuilder stringBuilder = new StringBuilder();
byte[] buffer = new byte[4096];
while ((count = inputStream.read(buffer)) != -1) {
     stringBuilder.append(new String(buffer, 0, count, "utf-8"));
}
inputStream.close();
httpURLConnection.disconnect();
//将结果转成String
String result = stringBuilder.toString();

2. 改正

用ByteArrayOutputStream先缓存,最后再统一转换。

//获取请求数据
InputStream inputStream = httpURLConnection.getInputStream();
int count = 0;
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
byte[] buffer = new byte[4096];
while ((count = inputStream.read(buffer)) != -1) {
     byteArrayOutputStream.write(buffer, 0, count);
}
byte[] data = byteArrayOutputStream.toByteArray();
byteArrayOutputStream.close();
inputStream.close();
httpURLConnection.disconnect();
//将结果转成String
String result = new String(data, 0, data.length, "utf-8");

相关文章

  • HttpURLConnection部分中文乱码

    最近有个项目在使用HttpURLConnection进行网络请求,返回结果出现了部分中文乱码的情况,而且只是一部分...

  • FireBase开发遇到的问题

    服务端发送中文,客户端收到的是乱码。 服务端发送原先逻辑:HttpURLConnection connection...

  • vscode中python print输出中文乱码

    一、Win10运行python乱码 简单修改中文乱码。缺点:系统部分软件乱码。 二、Win10运行python不乱...

  • Day_04_Servlet

    request获得中文参数乱码问题 response返回中文乱码问题 跳转

  • HttpURLConnection及乱码解决

    当我们在程序中访问远程服务器的接口时,有时会遇到中文乱码的问题,这里提供一种解决方案。 这里使用InputStre...

  • Servlet的一些问题

    1.传输中文的乱码问题 接收中文乱码(就是页面向服务器提交数据) 输出中文乱码(服务器向页面输出) 2.跳转

  • charles 配置

    中文乱码问题;Response中文乱码:在info.plist 中 的vmoption 添加-Dfile.enco...

  • charles 配置

    中文乱码问题;Response中文乱码:在info.plist 中 的vmoption 添加-Dfile.enco...

  • 2020-02-09_Resttemplate请求中文乱码

    Resttemplate请求中文乱码 1 概述 解决RestTemplate请求中文乱码问题。 如果是String...

  • sublime、vs code的中文显示

    如何解决Sublime Text 3不能正确显示中文的问题 中文乱码 sublime;VS Code:4个中文乱码...

网友评论

      本文标题:HttpURLConnection部分中文乱码

      本文链接:https://www.haomeiwen.com/subject/xpywxhtx.html