星空网 > 软件开发 > 操作系统

Android 字符乱码问题的处理

《Android 网络HTML查看器》一文中,运行代码实践一下

Android 字符乱码问题的处理images/loading.gif' data-original="http://images2015.cnblogs.com/blog/617081/201606/617081-20160628105329749-576874745.png" />

发现html源代码中出现了乱码,原因很明显:charset="gb2312"

android默认的字符集是"utf-8"

public class StreamTools {  /**   * 把输入流的内容转化成字符串   *   * @param is   * @return   */  public static String readInputStream(InputStream is) {    try {      ByteArrayOutputStream baos = new ByteArrayOutputStream();      int len = 0;      byte[] buffer = new byte[1024];      while ((len = is.read(buffer)) != -1) {        baos.write(buffer, 0, len);      }      is.close();      baos.close();      byte[] result = baos.toByteArray();      return new String(result);    } catch (Exception e) {      e.printStackTrace();      return null;    }  }}

 将上面标记的一行代码修改为:

return new String(result, "gb2312");

运行后的效果如下

Android 字符乱码问题的处理

但是这样修改后,不够智能,如果遇到utf-8的编码,又会出现乱码。继续修改代码如下:

package com.wuyudong.htmlviewer.utils;import java.io.ByteArrayOutputStream;import java.io.InputStream;public class StreamTools {  /**   * 把输入流的内容转化成字符串   *   * @param is   * @return   */  public static String readInputStream(InputStream is) {    try {      ByteArrayOutputStream baos = new ByteArrayOutputStream();      int len = 0;      byte[] buffer = new byte[1024];      while ((len = is.read(buffer)) != -1) {        baos.write(buffer, 0, len);      }      is.close();      baos.close();      byte[] result = baos.toByteArray();      String str = new String(result);      // 试着解析result里面的字符串      if (str.contains("gb2312")) {        return new String(result, "gb2312");      } else if(str.contains("utf-8")){        return str;      } else {        return null;      }            //return new String(result, "gb2312");    } catch (Exception e) {      e.printStackTrace();      return null;    }  }}

 




原标题:Android 字符乱码问题的处理

关键词:Android

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流