一、问题描述

  当我使用FileReader读取文本文件里的汉字时,读出来的是乱码。但为什么字符是正常的呢???

二、原因探究

  其根本原因在于编码标准不同。汉字采用gbk,而idea使用UTF-8。gbk编码中文是2个字节,UTF-8编码是3个字节代表一个字符,read读到的是一个字节,一个中文,当然就读半个字节了,不完全当然是乱码了。

三、解决方法

  将FileReader改用FileInputStream读取文件,就OK啦:

InputStreamReader reader = new InputStreamReader(new FileInputStream(filepath), "GBK");
BufferedReader br = new BufferedReader(reader);
String line;
while ((line = br.readLine()) != null) {
//。。。
}

Java 使用流读文本数据时乱码 解决方法的更多相关文章

  1. [转]mysql导入导出数据中文乱码解决方法小结

    本文章总结了mysql导入导出数据中文乱码解决方法,出现中文乱码一般情况是导入导入时编码的设置问题,我们只要把编码调整一致即可解决此方法,下面是搜索到的一些方法总结,方便需要的朋友. linux系统中 ...

  2. mysql导入导出数据中文乱码解决方法小结(1、navicat导入问题已解决,创建连接后修改连接属性,选择高级->将使用Mysql字符集复选框去掉,下拉框选择GBK->导入sql文件OK;2、phpmyadmin显示乱码的问题也解决,两步:1.将sql文件以utf8的字符集编码另存,2.将文件中sql语句中的字段字符集编码改成utf8,导入OK)

    当向 MySQL 数据库插入一条带有中文的数据形如 insert into employee values(null,'张三','female','1995-10-08','2015-11-12',' ...

  3. Linux中文件/文本的中文乱码解决方法

    Linux显示在Windows编辑过的中文就会显示乱码是由于两个操作系统使用的编码不同所致.Linux下使用的编码是utf8,而Windows使用的是gb18030.因此,解决Linux打开txt/c ...

  4. JMeter学习-041-响应数据中文乱码解决方法

    华夏子孙,中文为母语.因而在接口测试过程中,响应数据含有中文是再也正常不过的事情.同时,初学JMeter的童鞋,经常会遇到响应数据中中文乱码的问题. 本文中提供两种方式的修正方法,仅供大家参考,谢谢. ...

  5. RedHat Linux文本模式下乱码解决方法

    如果在安装RedHat Linux时选择中文未缺省语言,在文本模式下会出现乱码情况,对于在CLI(command-line interface,命令行界面)方式下调试程序时诸多不便,因为出错信息全是乱 ...

  6. mysql导入导出数据中文乱码解决方法小结

    linux系统中 linux默认的是utf8编码,而windows是gbk编码,所以会出现上面的乱码问题. 解决mysql导入导出数据乱码问题 首先要做的是要确定你导出数据的编码格式,使用mysqld ...

  7. jquery的异步获取返回值为中文时乱码解决方法

    用jqgrid异步获取列表值,遇到个问题,服务器端从数据库取到的数据没有出现中文乱码问题(日志打出来是没有乱码的),但是异步传到客户的时候却出现了乱码. 服务器端已经编码过了(UTF-8编码).开始一 ...

  8. mysql导入数据中文乱码解决方法

    常见的MySQL导入方法有两种 第一种方法,使用MySQL命令导入 mysql -uroot -p123456 --default-character-set=utf8 [db_name] < ...

  9. linux sqlplus查询数据中文乱码解决方法记录

    locale-gen -lang en.US.UTF-8 重启.

随机推荐

  1. linux内核中的wait_event_interruptible_timeout接口解析

    1. 原型 #define wait_event_interruptible_timeout(wq_head, condition, timeout) \ ({ \ long __ret = time ...

  2. 深入浅出ConcurrentHashMap1.8+CAS+volatile

    1.深入浅出CAS 前言 CAS(Compare and Swap),即比较并替换,实现并发算法时常用到的一种技术,Doug lea大神在java同步器中大量使用了CAS技术,鬼斧神工的实现了多线程执 ...

  3. iOS如何将RGB565的原始图像数据转为UIImage对象

    我们在做一些图像处理时,往往会涉及到RGB565这种图像数据格式.由于其每个像素仅占2个字节,对于不需要像素透明度的情况下使用RGB565既能基本能保证图像的色彩,又能降低图像数据尺寸,节省带宽.因此 ...

  4. c++ string操作

    #include <iostream>#include <string> using namespace std; int main(){ string str1(" ...

  5. Hystrix-基本概念(设计原则和两种隔离技术)

    一.Hystrix是什么在微服务的架构系统中,每个服务都可能会调用很多其他服务,被调用的那些服务就是依赖服务.有的时候某些依赖服务出现故障也是很正常的.Hystrix可以让我们在对服务间的调用进行控制 ...

  6. JAVA 基础编程练习题38 【程序 38 求字符串长度】

    38 [程序 38 求字符串长度] 题目:写一个函数,求一个字符串的长度,在 main 函数中输入字符串,并输出其长度. package cskaoyan; public class cskaoyan ...

  7. iOS自适应行高方法及问题

    最近一周被项目的动态高度虐的很惨,感觉浪费了很多时间,但是值得高兴的是对动态高度的使用掌握了好多方法,并且知道了方法之间的区别和优缺点. 1.最常用的: UITableView+FDTemplateL ...

  8. spring的控制器如何获取参数

    1.控制器代码 获取参数的注解 @RequestParam(name="name", required=false, defaultValue="World") ...

  9. Bootstrap 控制台示例

    1.打开https://getbootstrap.com/docs/4.3/examples/ 2.选择Dashboard 3.右键查看源代码,另存为 4.通过源代码界面下载JS和CSS 5.修改绝对 ...

  10. java实现List<People>的排序

    1.首先新建测试的实体类(People类): import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsCon ...