首页 > 代码库 > 【笔记——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获取数据中文乱码问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。