• Android 字符乱码问题的处理


    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;
            }
    
        }
    
    }
  • 相关阅读:
    我在硅谷时候写的文章
    快速上手ABP
    朝花夕拾
    ABP问题速查表
    被低估的.net(上)
    申请Office 365一年免费的开发者账号攻略(2018年10月份版本)
    office365的开发者训练营,免费,在微软广州举办
    数据恢复顾问(DRA)
    使用RMAN对数据文件进行恢复
    Linux环境下利用句柄恢复Oracle误删除的数据文件
  • 原文地址:https://www.cnblogs.com/wuyudong/p/5622655.html
Copyright © 2020-2023  润新知