You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用BufferedWriter写入整数到txt出现中文乱码,如何正确写入?

问题原因

首先明确:该问题和爬取数据的编码完全无关,是BufferedWriter方法调用的重载问题。
你调用的bw.write(actualCaseCount)使用的是Writer类的write(int c)重载,这个方法的作用是把传入的int值作为Unicode编码值写入对应的字符,而非写入整数的十进制数字形式。你遇到的“毉”字,刚好就是你拿到的病例数对应的Unicode编码值对应的中文字符,所以控制台打印整数正常,写入文件就变成了乱码汉字。

解决方法

只需要把整数转为字符串后再写入即可,修改写入的那行代码:

// 原错误写法
// bw.write(actualCaseCount);
// 修正为
bw.write(String.valueOf(actualCaseCount));

如果需要写入后自动换行,方便后续读取,可以改成:

bw.write(String.valueOf(actualCaseCount));
bw.newLine();

也可以用更方便的PrintWriter替代BufferedWriter,支持直接写入整数:

PrintWriter pw = new PrintWriter(new FileWriter("caseCountFile"));
pw.println(actualCaseCount);
pw.flush();
pw.close();
额外优化建议
  • 你目前代码中把jsoup爬取到的内容写入data临时文件再读取的逻辑完全可以省略,直接在内存中处理info元素即可,减少不必要的IO操作。
  • 流操作建议用Java 7+提供的try-with-resources语法,会自动关闭资源,不需要手动调用close(),避免资源泄漏。示例写法:
try (BufferedWriter bw = new BufferedWriter(new FileWriter("caseCountFile"))) {
    bw.write(String.valueOf(actualCaseCount));
} catch (IOException e) {
    e.printStackTrace();
}

内容的提问来源于stack exchange,提问作者Wyatt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 11:09:00