生三从境界:昨夜西风凋碧树,独上高楼,望尽天涯路。 衣带渐宽终不悔,为伊消得人憔悴。 众里寻他千百度,蓦然回首,那人却在灯火阑珊处。人

随笔 - 151  文章 - 0  评论 - 117  阅读 - 108万 

一、问题描述

  当我使用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) {
//。。。
}
posted on   测试开发喵  阅读(1129)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示