您现在的位置是:首页 > 正文

java 文件流 乱码_Java IO流读取中文文本文件乱码问题,完美解决

2024-04-01 05:42:06阅读 1

package chenlei.test;

import java.io.BufferedReader;

import java.io.File;

import java.io.FileInputStream;

import java.io.InputStream;

import java.io.InputStreamReader;

/**

* 字符流读取中文乱码问题

* @author chenleiz

* @email andy_zhou.china@outlook.com

*/

public class IODemo02 {

public static void main(String[] args) throws Exception {

String filePath = "f:\\iodemo\\test.txt";

System.out.println(readTxt(filePath));

}

//读取文件

public static String readTxt(String path) throws Exception {

StringBuilder strb = new StringBuilder("");

InputStream is = new FileInputStream(new File(path));

InputStreamReader isr = new InputStreamReader(is, getCode(path));

BufferedReader br = new BufferedReader(isr);

String str = "";

while (null != (str = br.readLine())) {

strb.append(str);

strb.append("\r\n");

}

br.close();

return strb.toString();

}

// 获取编码格式 gb2312,UTF-16,UTF-8,Unicode,UTF-8

public static String getCode(String path) throws Exception {

InputStream inputStream = new FileInputStream(path);

byte[] head = new byte[3];

inputStream.read(head);

String code = "gb2312"; // 或GBK

if (head[0] == -1 && head[1] == -2)

code = "UTF-16";

else if (head[0] == -2 && head[1] == -1)

code = "Unicode";

else if (head[0] == -17 && head[1] == -69 && head[2] == -65)

code = "UTF-8";

inputStream.close();

return code;

}

}

网站文章

  • MYSQL:数据表的基本操作--创建+查看+修改+删除 热门推荐

    数据表的基本操作--创建+查看+修改+删除

    2024-04-01 05:41:59
  • NFS文件共享服务搭建步骤说明

    NFS 是一种基于 TCP/IP 传输的网络文件系统协议,最初由 sun 公司开发。通过使用 NFS协议,客户机可以像访问本地目录一样访问远程 NFS 服务器中的共享资源。NFS 也是 NAS存储设备必然支持的一种协议,但是因为没有用户认证机制,而且数据在网络上明文传输,安全性很差,所以一般只能在局域网中使用。

    2024-04-01 05:41:51
  • 最后一战(LastBattle)服务器源码分析8.1——定时器

    定时器: 目前主流的定时器实现包括时间轮和最小堆,最后一战是用最小堆(优先队列)实现的定时器,下面先分析下其具体实现: typedef std::function HeartbeatCallback; typedef int64_t TimeKey; class CBattleTimer { public: CBattle...

    2024-04-01 05:41:11
  • 一年工作回顾及总结

    看到别人的工作总结,不错,分享下。 一年回顾: 去年7月4号入职到现在已经有一年零2个月了,一直想写下一年工作回顾及总结,但是每次打开文档时总是以各种理由推后,一来是想写的太多但是又不知从哪里写起,二来是总想把自己的一年工作经历写的真实好看一点,以至于推到现在才写这个总结及回顾,昨天一个大学玩的比较好的同学跟我讲起了他的创业,我也趁今天好好回顾总结下过去的一年,想到哪就写到哪吧。

    2024-04-01 05:41:05
  • 如何配置Apple推送证书 push证书

    如何配置Apple推送证书 push证书

    作证书,然后使用Apple的推送功能配置push证书,就可以得到了。PS:push没有描述文件,所以不。推送证书是用来配置在网站上推送的,放服务器的。不是用来打包编译app的。PS:开启推送后要重。3...

    2024-04-01 05:40:59
  • C++顺序容器

    C++顺序容器

    标准库定义了三个顺序容器适配器:stack(栈适配器),queue(队列适配器),priority_queue(优先队列),所有的适配器都要求容器具有添加,删除,以及访问尾元素的能力。传递给assig...

    2024-04-01 05:40:52
  • python中xlrd读取xlsx读取异常的处理方法

    python中xlrd读取xlsx读取异常的处理方法

    最近在写自动化测试工具的时候搭建了一个虚拟环境,在新下载的xlrd的版本过高导致已经不支持xlsx的文件读取报错误异常为in open_workbook raise XLRDError(FILE_FO...

    2024-04-01 05:40:07
  • 【密码学RSA】共模攻击+维纳攻击+进制转换的低指数广播攻击+dp,dq已知+n为p的r次方的脚本

    【密码学RSA】共模攻击+维纳攻击+进制转换的低指数广播攻击+dp,dq已知+n为p的r次方的脚本

    1.共模攻击: import gmpy2 from Crypto.Util.number import * def Commodulus(e1, e2, n, c1, c2): g, s, t = g...

    2024-04-01 05:40:00
  • Python 一键创建依赖包和一键安装依赖包

    使用 pip创建依赖包requirements.txt 用来记录项目所有的依赖包和版本号,只需要一个简单的 pip 命令就能完成。记住在你代码文件夹下创建你这些代码所需要的依赖包pip freeze ...

    2024-04-01 05:39:54
  • 原来一直以为i686是64位的

    在yum上找32位的i386找不到,看到i686以为是64位呢,原来它也是32位啊i686 只是i386的一个子集,支持的cpu从Pentium 2 (686)开始,之前的型号不支持.备注:1. i386 适用于intel和AMD所有32位的cpu.以及via采用X86架构的32的cpu.intel平台包括8086,80286,80386,80486,奔腾系列(1.2.3.4...

    2024-04-01 05:39:14