JAVA IO流读取中文出现乱码

乱码一般情况来说都是因为编码格式有问题,可能是写入的时候也可能是读取的时候。
本文所述情况为JAVA IO流读取CSV/TXT文件出现乱码

原来我的主要代码如下:

// JAVA代码
//新建了缓冲读取器对象
BufferedReader reader = new BufferedReader(new FileReader(fileArray[i]));
String line = reader.readLine();
for (int j = 0; j < item.length; j++) {
//							if (item[j].equals("产品编码"))
							System.out.println(item[j]);
						}

控制台输出如下:
在这里插入图片描述

乱码嘛,一般都是编码问题,我这里默认是utf-8编码模式,但是读取出来是乱码,直接用电脑打开是正常的。

下面是我的改进代码:

//主要是读取文件流的时候要设置好读取时的编码格式,第二句的GBK就是我读取文件时选择GBK编码模式
//如果不写的话,默认使用的就是utf-8模式的,就会出现乱码
//这完全看当时文件写入用的什么模式,要用对应的模式读取。
	FileInputStream fis = new FileInputStream(fileArray[i]);// 换成你的文件名
	// 换成你的文件的编码模式GBK utf-8等等,可以自己试试或者想办法获取文件的编码模式
	InputStreamReader isr = new InputStreamReader(fis, "GBK");
	//新建缓冲阅读器对象
	BufferedReader reader = new BufferedReader(isr);
	//输出到控制台的步骤是一样的
	String line = reader.readLine();
	for (int j = 0; j < item.length; j++) {
//							if (item[j].equals("产品编码"))
							System.out.println(item[j]);
						}

控制台改进代码下的输出:
在这里插入图片描述

总结: 编码模式不对一般都是表现为中文乱码,无法读取,无法作比较等。所以新建阅读器对象要小心一些,或者提前搞清楚文件的编码模式。
PS好像有个方法可以获取文件的编码模式,getencoding什么的,有空可以研究下,欢迎在评论中补充~

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值