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

Java写入特殊字符到文本文件乱码问题:替换方向符后文件显示异常

解决Java写入特殊字符到文件乱码的问题

看起来你遇到的是字符编码不匹配导致的乱码问题,我来帮你捋清楚原因和解决办法:

问题根源

你用的FileWriter默认会使用系统平台的默认字符集(比如Windows上可能是GBK,Linux/macOS是UTF-8),而控制台输出通常用的是UTF-8。当你把↑、→这些Unicode特殊字符通过FileWriter写入时,如果系统默认编码不是UTF-8,字符就会被错误编码,导致打开文件时显示成→、↑这类乱码。

修复方案

把FileWriter替换成可以指定编码的OutputStreamWriter,明确指定UTF-8编码即可。修改后的代码片段如下:

private static void print(String t){
    File log = new File("a.txt");
    String raw = t;
    raw = raw.replaceAll("Up", " ↑ ");
    raw = raw.replaceAll("Right", " → ");
    
    try{
        // 替换FileWriter为OutputStreamWriter,指定UTF-8编码
        OutputStreamWriter fileWriter = new OutputStreamWriter(new FileOutputStream(log, true), StandardCharsets.UTF_8);
        BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
        
        bufferedWriter.write(raw);
        bufferedWriter.newLine(); // 按需添加换行
        bufferedWriter.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

额外提示

  1. 如果你用的是Java 7及以上版本,也可以用更简洁的Files类方法:
try {
    Files.write(Paths.get("a.txt"), (raw + System.lineSeparator()).getBytes(StandardCharsets.UTF_8), StandardOpenOption.APPEND);
} catch (IOException e) {
    e.printStackTrace();
}
  1. 打开文件时,要确保你的文本编辑器(比如Notepad++、IDEA)也设置为UTF-8编码查看,不然即使文件编码正确,编辑器用其他编码打开还是会乱码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:00:32