【笔记——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 block 15 e.printStackTrace(); 16 } 17 return by; 18 }
得到解压后的byte[]数组数据后,直接通过
String result = new String(by,"utf-8");
就能得到结果
其中:
by:得到的解压后的数组
utf-8:这个是可以从拦截那里看到的编码类型
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。