码迷,mamicode.com
首页 > 移动开发 > 详细

Android 字符乱码问题的处理

时间:2016-06-28 12:36:51      阅读:417      评论:0      收藏:0      [点我收藏+]

标签:

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

技术分享

发现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");

运行后的效果如下

技术分享

但是这样修改后,不够智能,如果遇到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 字符乱码问题的处理

标签:

原文地址:http://www.cnblogs.com/wuyudong/p/5622655.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!