字节IO流读取txt文件乱码问题

本文分析了导致字节IO流读取txt文件出现乱码的两个主要原因:编码不一致和字节数组大小不合适。解决方式包括确保文件和Java源代码的编码匹配,以及在处理包含中文的文本时使用字符流代替字节流。提供了代码示例进行说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原因一:将txt文件的内容转为IO流 与 byte[] 转 String 所用的编码不一致(byte[]:用于存读取的数据)。

原因二 : 字节流是以字节单位读取的,假设用一个 byte bytes[] = new byte[11];去接收文本里面有4个汉字的txt文档的IO流。

此时假设编码格式为UTF-8,UTF-8存储一个汉字需要3个字节。也就是说bytes.length>=3*4 才能一次性接收,但我现在bytes数组开辟的空间是11,也就是说需要接收2次。这时候问题就产生了,一个汉字是3个字节,最后一个字的3个字节被拆成了两部分,当你打印的时候,结果显然会出问题。


原因一 解决方式:打开txt文档 点另存为,对话框最下面 可以看到该txt的编码格式

如我的这个是ANSI(GBK),这个编码格式决定了 txt文本中的内容 转 IO 流的 编码格式。 这个格式必须跟你 .java 文件设置的编码格式一样,否则就会产生乱码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值