HttpURLConnection中文乱码分析和解决

HttpURLConnection中文乱码分析和解决

产生中文乱码一般都是编码格式不匹配导致的,例如后台使用UTF-8编码格式,而移动端在接收数据时采用Iso 或者 GBK等格式,而往往我们所使用的网络编程工具在我们步明确指定编码格式的情况下给我们指定的默认格式并非UTF-8.
比如下面这段代码就会导致中文乱码

URL url = new URL(RequestURL);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();

InputStream input = conn.getInputStream();
StringBuffer sb1 = new StringBuffer();
int ss;
while ((ss = input.read()) != -1) {
    sb1.append((char) ss);
result = sb1.toString();

在这样的操作下,有可能会出现接收到的中文是乱码的,比如后台返回的格式是”UTF-8”,接收到的中文就会是乱码

解决方法进行转码

InputStream input = conn.getInputStream();
InputStreamReader reader=new InputStreamReader(input,"UTF-8");
StringBuffer sb1 = new StringBuffer();
int ss;
while ((ss = reader.read()) != -1) {
    sb1.append((char) ss);
result = sb1.toString();

**注:**Volley在后台步明确指定编码格式的情况下也会默认采用ISO-8859-1格式

你可能感兴趣的:(Android实践与思索)