springboot jar 运行时写入/读取文件出现中文乱码,idea 运行时正常

简单描述一下问题现象:

在业务需求中,需要按行写入和读取一个文本文件;在 idea 开发时,一切正常;打好 jar 包运行时,写入和读取的中文全部变成乱码了。。。

我的问题代码:

(代码段比较简单,就不写注释了):

1、写文件:

代码:

File file = new File("你的文件路径");
try (BufferedWriter writer = new BufferedWriter(new FileWriter(file))) {
    writer.write("中文乱码");
    writer.newLine();
}

代码执行后,查看文件内容如下:

��������

 2、读文件

代码:

File file = new File("你的文本文件路径");
try (BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(file)))) {
    String readLine;
    while ((readLine = bufferedReader.readLine()) != null) {
        System.out.println(readLine);
    }
}

 手动在文本文件中添加一个中文信息

我是要变成乱码的中文

 读取结果:

��������

 问题原因

中文乱码问题在于,当使用 Reader 和 Writer 读取和写入文件时,未设置编码方式,而使用了默认的编码方式(idea 运行时,默认编码 utf-8;jar 包运行时,默认编码 GBK);

代码调整如下:

1、写文件

File file = new File("你的文件路径");
// 给 StreamWriter 指定编码方式 UTF-8
try (OutputStreamWriter osWriter = new OutputStreamWriter(new FileOutputStream(file), StandardCharsets.UTF_8);
    BufferedWriter writer = new BufferedWriter(new FileWriter(file))) {
    writer.write("中文乱码");
    writer.newLine();
}

2、读文件

File file = new File("你的文本文件路径");
// 给 StreamReader 指定编码方式 UTF-8
try (InputStreamReader isReader = new InputStreamReader(new FileInputStream(file), StandardCharset.UTF_8);
    BufferedReader bufferedReader = new BufferedReader(isReader)) {
    String readLine;
    while ((readLine = bufferedReader.readLine()) != null) {
        System.out.println(readLine);
    }
}

通过显式设置 StreamReader 和 StreamWriter 的编码方式为 UTF-8,就解决了文件存取时出现的中文乱码问题啦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值