码迷,mamicode.com
首页 > 编程语言 > 详细

【笔记——Java】关于HttpUrlConnection获取数据中文乱码问题

时间:2014-11-15 06:31:47      阅读:260      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   color   ar   sp   java   数据   

前段时间写了一个从顺丰获取快递信息的程序,通过HttpUrlConnection 获取的数据乱码,明明拦截的数据写着utf-8还是乱码,后来终于发现原因是没有对数据进行解压,上拦截图:

bubuko.com,布布扣

总算是找到问题所在了,数据传输似乎会先压缩,估计是为了传输效率吧。

于是乎先进行解压吧:

 1 /**
 2      * 这是一个静态方法,数据工具方法,传入输入流in,以及数据长度,就能获取解压后的结果byte数组
 3      * @param in 一个输入流,可以通过HttpUrlConnection对象的getInputStream()获取
 4      * @param length 数据的长度,主要是用来创建一个刚好的byte数组来存放得到的数据,可以HttpUrlConnection对象的getHeaderField("Content-Length")获得
 5      */
 6     
 7     public static byte[] getInt(InputStream in,int length) {
 8         byte[] by = new byte[length];
 9         
10         try {
11             GZIPInputStream giz = new GZIPInputStream(in);
12             giz.read(by, 0, length);
13         } catch (IOException e) {
14             // TODO Auto-generated catch block
15             e.printStackTrace();
16         }
17         return by;
18     }

得到解压后的byte[]数组数据后,直接通过

String result = new String(by,"utf-8");

就能得到结果

其中:

  by:得到的解压后的数组

  utf-8:这个是可以从拦截那里看到的编码类型

【笔记——Java】关于HttpUrlConnection获取数据中文乱码问题

标签:style   blog   http   io   color   ar   sp   java   数据   

原文地址:http://www.cnblogs.com/kirno/p/4098628.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!