当你读取一个文本文件时,如果是在电脑记事本上面写的,然后保存。使用InputStreamReader读取出来,并且是按照他的编码格式读取出来,发现还是存在乱码,比如文本内容是“你好”,读出来显示是“?你好”。


使用资源管理器在项目的目录下创建一个b.txt文件,在里面输入“你好”,然后保存

 InputStreamReader isr = new InputStreamReader(new FileInputStream(“src/txt/b.txt”));
char[] ch = new char[1024];
int index = isr.read(ch);
System.out.println(new String(ch,0,index));
isr.close();

运行结果:?你好


这是因为你在文本编辑器写入文本时,系统自动在前面加了一个开始标示符,在内容结束后面加了一个结束标示符,如果 System.out.println(new String(ch,1,index-1));来打印输出的话,就把开始结束标示符去掉了,可以达到原内容输出的效果,但不建议这么做,因为并不是所有的文件都是这样。

 InputStreamReader isr = new InputStreamReader(new FileInputStream("src/txt/b.txt"));
char[] ch = new char[1024];
int index = isr.read(ch);
System.out.println(new String(ch,1,index-1));
isr.close();

运行结果:你好

最好还是自己通过OutputStreamWriter自己写一个文本文件,规定他的编码格式,然后读取出来。就不会出现上面描述的错误。详细代码如下:

 public static void main(String[] args) throws Exception {
//标准的字节流,按照一定的编码格式,转换为字符流。如果读取字符流的时候,使用的是系统默认的编码格式,
//则直接使用fileReader和fileWriter。如果需要指定编码格式,则使用inputStreamReader和OutputStreamWrite
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("src/txt/b.txt"), "UTF-8");
//可以再包装一层,也可以不包装这一层,直接使用osw调用方法往文本里面写入内容
BufferedWriter bw = new BufferedWriter(osw);
bw.write("你好");
bw.flush();//刷新缓冲内容到文件
bw.close();
osw.close();
//创建一个inputstreamreader
InputStreamReader isr = new InputStreamReader(new FileInputStream("src/txt/b.txt"),"UTF-8");
char[] ch = new char[1024];
int index = isr.read(ch);
System.out.println(new String(ch,0,index));
isr.close();
}

最后运行结果:你好

InputStreamReader读取文件出现乱码的更多相关文章

  1. .Net Core 读取文件中文乱码

    首先,要知道.Net Core和.Net Framework两个环境下很多东西是不同的,接下来要说的这个就是其中一个. Encoding.Default,在  .NET Framework 中,Def ...

  2. 解决FileInputStream 读取文件中文乱码问题(转)

    当Java中使用 FileInputStream 读取txt等文档时,中文会产生乱码,解决方法如下: try { fis = new FileInputStream(file); InputStrea ...

  3. java 读取文件中文乱码问题

    很少写java io的代码,今天整了一个发现 本地调试好好的,放到jmeter里就打印乱码.一番折腾,终于搞定~直接上代码: List<Order> orderList = new Arr ...

  4. jmeter经验----java 读取文件中文乱码问题

    很少写java io的代码,今天整了一个发现 本地调试好好的,放到jmeter里就打印乱码.一番折腾,终于搞定~直接上代码: List<Order> orderList = new Arr ...

  5. Node FS 读取文件中文乱码解决

    1:首先保证源文件编码方式为UTF-8 2:读取代码,设置编码方式rs.setEncoding('utf8') var fs = require('fs'); var rs = fs.createRe ...

  6. 解決BufferedReader读取UTF-8文件中文乱码

    解決BufferedReader读取UTF-8文件中文乱码         File rst01 = new File(context.getRealPath("/")+" ...

  7. FileReader读取文件里文乱码问题

    有一个UTF-8编码的文本文件,用FileReader读取到一个字符串,然后转换字符集:str=newString(str.getBytes(),"UTF-8");结果大部分中文显 ...

  8. IO 流读取文件时候出现乱码 文件编码格式问题 怎么转换解决方法

    在使用下面这个写法时候UTF-8文件编码 在读取时候出现乱码问题. File myFile=new File("文件路径"); BufferedReader in = new Bu ...

  9. JAVA本地读取文件,解决中文乱码问题

    JAVA本地读取文件出现中文乱码,查阅一个大神的博客做一下记录 import java.io.BufferedInputStream;import java.io.BufferedReader;imp ...

随机推荐

  1. 流畅的python学习笔记:第五章

    在python中一切都可以视作为对象,包括函数.我们来看个例子: def function_try():     '''it is funciton try doc'''     print 'fun ...

  2. linux发行版和内核的关系

    转自:http://m.blog.csdn.net/article/details?id=50595230 Linux内核是计算机操作系统的核心.一个完整的 Linux发行版包括了内核与一些其他与文件 ...

  3. 2017CCPC中南地区赛 H题(最长路)

    题目地址:202.197.224.59/OnlineJudge2/ 来自湘潭大学OJ. 这里用到了一个树的直径(树中的最长边)的结论:当你找到一棵树的最长边后,这个树中所有点的最长边必定和这条边的两个 ...

  4. h5 新增的invalid事件,貌似有很大bug

    <!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8" ...

  5. href="#" 的坑

    第一次发博客, 也不讲究样式. 只是单纯的说一下踩过的坑,方便后人避坑吧 之前做项目的时候,碰到一个非常奇葩的问题. 就是在jqgrid中写了了一个简单的方法 {name:'已经存在的列名称', la ...

  6. 多线程下System.Security.Cryptography.Aes CreateDecryptor报“Safe handle has been closed”的解决方案

    因为系统需要对一些核心数据进行预加载以保证查询速度. 所以在application_start 事件中启用了后台线程对相关的数据进行加载并解密(为了保证解密的效率,将AES对像做了静态对像来保存:pr ...

  7. spring基础系列--JavaConfig配置

    原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/7171011.html 早以前,Spring推荐使用XML的方式来定义Bean及Bean之间 ...

  8. Java虚拟机:内存模型详解

    版权声明:本文为博主原创文章,转载请注明出处,欢迎交流学习! 我们都知道,当虚拟机执行Java代码的时候,首先要把字节码文件加载到内存,那么这些类的信息都存放在内存中的哪个区域呢?当我们创建一个对象实 ...

  9. java Script 用if else 实现从大到小指定输出,升序排列

    我只是一个小白 各位大神看到不要介意 var a = Number(prompt("请输入你需要排列的第一个数字")) var b = Number(prompt("请输 ...

  10. GitHub 入门教程

    一.前言 编程进阶的道路是坎坷的,没有任何捷径.这个时期只能是积累.吸收.学习.坚持,做到量的积累,到质的飞跃 古语有云:'书山有路,勤为径'.'不积跬步,无以至千里' 编程是一个动手实践性的学科,多 ...