zoukankan      html  css  js  c++  java
  • 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;
            }
    
        }
    
    }
  • 相关阅读:
    创建文本编辑输入框1:
    表likp新增第一次过账输入日期字段,vl02n/vl01n/vl03n/vl06o的增强
    如何获得控件的属性
    使用OVS
    【Vue】安装(NPM 方法)
    【Webpack】学习随笔
    【node】安装
    【CSS-flex】圣杯布局(Holy Grail Layout)、输入框的布局、悬挂式布局、固定的底栏
    【CSS】关于flex
    解决MySQL新建用户后无法登录问题
  • 原文地址:https://www.cnblogs.com/wuyudong/p/5622655.html
Copyright © 2011-2022 走看看