• java判断byte[]数组的原字符串编码类型【转载】


    在做项目之间的字符数组传递时一直未找到一种简洁有效的写法,来实现文件内容的字符集转换,以下内容为转载内容,实现方式简洁,特此转载:

    》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

    最近做html脚本导入库中,读取时总会有乱码的情况。找到一些方法乱码转为正确字符串输出。

    参考原文:

    https://blog.csdn.net/ajaxhu/article/details/12446917

    <!--GetByteEncode-->
    <dependency>
        <groupId>com.googlecode.juniversalchardet</groupId>
        <artifactId>juniversalchardet</artifactId>
        <version>1.0.3</version>
    </dependency>
    复制代码
    @Slf4j
    public class Test {
        @Test
        public void encode() throws IOException {
            String file = "C:\Users\Victory-x\Desktop\code.html";
            byte[] bytes = file2byte(file);
            //编码判断
            String encoding = GetByteEncode.getEncoding(bytes);
            System.out.println("字符编码是:" + encoding);
            System.out.println("原乱码输出:" + new String(bytes));
            System.out.println("//***********************//");
            System.out.println("根据文件编码输出:" + new String(bytes, encoding));
        }
    
        public static byte[] file2byte(String filePath) throws IOException {
            byte[] buffer = null;
            try {
                File file = new File(filePath);
                FileInputStream fis = new FileInputStream(file);
                ByteArrayOutputStream bos = new ByteArrayOutputStream();
                byte[] b = new byte[1024];
                int n;
                while ((n = fis.read(b)) != -1) {
                    bos.write(b, 0, n);
                }
                fis.close();
                bos.close();
                buffer = bos.toByteArray();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }
            return buffer;
        }
    }
    复制代码
    GetByteEncode:
    复制代码
    import lombok.extern.slf4j.Slf4j;
    import org.mozilla.universalchardet.UniversalDetector;
    
    /**
     * 获取文件编码类型
     *
     * @author XSL
     * @version Id: GetByteEncode.java, V 1.0 2018/11/30 10:03 XSL Exp $$
     */
    @Slf4j
    public class GetByteEncode {
    
        /**
         * 获取文件编码类型
         *
         * @param bytes 文件bytes数组
         * @return      编码类型
         */
        public static String getEncoding(byte[] bytes) {
            String defaultEncoding = "UTF-8";
            UniversalDetector detector = new UniversalDetector(null);
            detector.handleData(bytes, 0, bytes.length);
            detector.dataEnd();
            String encoding = detector.getDetectedCharset();
            detector.reset();
            log.info("字符编码是:{}", encoding);
            if (encoding == null) {
                encoding = defaultEncoding;
            }
            return encoding;
        }
    }
    复制代码

    其它方法乱码转换,原文:

    http://daikainan.iteye.com/blog/1439322

    《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《

  • 相关阅读:
    Django之forms.Form
    Django之Middleware中间件方法使用
    Django之请求生命周期
    Django操作session实例
    Django操作cookie实例
    Django操作session
    Django操作cookie
    Django之cookie与session
    Django之AJAX传输JSON数据
    Django之JSON数据格式
  • 原文地址:https://www.cnblogs.com/Stir-friedEggplant/p/11187894.html
Copyright © 2020-2023  润新知