Java 自动识别文件编码

  public static  void transcodeFile(InputStream inputStream, OutputStream outputStream, byte[] bf) throws IOException {
        try {
            src = new InputStreamReader(inputStream, getFileEncode(bf));
            dst=new OutputStreamWriter(outputStream,"x-UTF-16LE-BOM");
            int bufferLen;
            while ((bufferLen = src.read()) != -1) {
                dst.write(bufferLen);
            }
        } catch (Exception e) {
            e.toString();
        } finally {
            src.close();
            dst.close();
        }

    }

Java 可以自动识别文件编码:


   public static String getFileEncode(String fileName) {
         String charSet = "";
        try {
            FileInputStream fis = new FileInputStream(new File("D:\\write.srt"));
            byte[] bf = new byte[3];
            fis.read(bf);
            fis.close();
            if (bf[0] == -17 && bf[1] == -69 && bf[2] == -65) {
                charSet = "UTF-8";
            } else if ((bf[0] == -1 && bf[1] == -2)) {
                charSet = "Unicode";
            } else if ((bf[0] == -2 && bf[1] == -1)) {
                charSet = "Unicode big endian";
            } else {
                charSet = "ANSI";
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return charSet;
    }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值