当从服务器请求文本格式的内容时,很可能会出现乱码问题,这是因为服务器内容编码格式和客户端获取内容格编码式不一致导致。
如下:
服务器端
客户端
这时就不能直接使用通过网路请求得到的数据了,需要在客户端进行进一步的编译!
private String getStringFromInputStream(InputStream is) throws IOException{
ByteArrayOutputStream baos=new ByteArrayOutputStream();//定义一个缓存流
byte[] buffer=new byte[1024];//定义一个字节数组,去读取is
int len=-1;
while((len = is.read(buffer)) != -1) {//将字节写入缓存
baos.write(buffer, 0, len);
}
is.close();//关闭输入流
String html = baos.toString();//把流中的数据转换成字符串,采用默认编码UTF-8
String charset="UTF-8";
if(html.contains("gbk")||html.contains("GBK")||html.contains("gb23312")
||html.contains("GB2312")){//如果包含GB2312。。则采用GB2312进行编码
charset="gbk";
}
byte[] byteArray=baos.toByteArray();
html=new String(byteArray, charset);
baos.close();//关闭缓存流
return html;
}