1.第一种情况:
服务器与客户端编码不统一造成中文乱码,当服务器返回数据是UTF-8格式时,客户端在读取输入流时,需要将其转换成UTF-8格式,如下是客户端部分代码:
如下代码:
服务器与客户端编码不统一造成中文乱码,当服务器返回数据是UTF-8格式时,客户端在读取输入流时,需要将其转换成UTF-8格式,如下是客户端部分代码:
//设置URL并且打开连接
url=new URL("http://192.168.1.7:8080/exa/zh_cn");
httpurlconnection=(HttpURLConnection)url.openConnection();
//得到输入流并转换为字符串
inputStream=httpurlconnection.getInputStream();
String strResult="";
byte[]b=new byte[1024];
int i=0;
while((i=inputStream.read(b))!=-1){
strResult+=new String(b,"utf-8");//第二个参数的变化会是中文变为乱码
b=new byte[1024];
}
//显示到控件上
textView_1.setText(strResult);
2.第二种情况:
如下代码:
inputStream=this.getAssets().open("test.text");
byte buffer[]=new byte[100];//把字节的数组直接设置成输入流的长度一次性读取,避免乱码
StringBuffer sb=new StringBuffer();
int i=0;
while((i=inputStream.read(buffer))!=1){
sb.append(new String(buffer,0,i));
}
textView_1.setText(sb.toString());
还可以用字符的方式读取:
inputStream=this.getAssets().open("test.text");
StringBuffer sb=new StringBuffer();
InputStreamReader isr=new InputStreamReader(inputStream);
char buf[]=new char[20];
int nBufLen=isr.read(buf);
while(nBufLen!=-1){
sb.append(new String(buf,0,nBufLen));
}
textView_1.setText(toString());