首页 > 代码库 > 【笔记——Java】关于HttpUrlConnection获取数据中文乱码问题

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

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

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

于是乎先进行解压吧:

 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 block15             e.printStackTrace();16         }17         return by;18     }

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

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

就能得到结果

其中:

  by:得到的解压后的数组

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

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