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

Java程序输出文件出现中文乱码问题排查求助

中文乱码问题的原因及解决办法

这个中文乱码问题本质是字符编码不匹配,具体来说有两个核心原因:

  • 你当前创建PrintStream的方式,默认会采用JVM运行时的平台默认字符编码来把字符串转成字节写入文件。虽然Ubuntu 16.04的系统默认编码通常是UTF-8,但JVM可能因为环境变量配置、启动参数等原因,使用了其他编码(比如ISO-8859-1),导致中文转字节时出现编码丢失,写入文件后自然就乱码了。
  • 另外,如果你的Java源代码文件本身不是以UTF-8编码保存的,编译后生成的字节码里的中文字符串可能已经是乱码状态,后续输出到文件自然也会显示异常。

快速解决方法

你只需要在创建PrintStream时显式指定UTF-8编码,强制统一编码规则,就能避免乱码问题。修改后的代码如下:

public static void main(String[] args) throws Exception {
    // 显式指定UTF-8编码,第二个参数true表示自动刷新缓冲区
    PrintStream out = new PrintStream(new FileOutputStream("Programoutput.txt"), true, "UTF-8");
    System.setOut(out);
    
    // 你的后续业务代码...
}

额外建议

为了彻底避免编码问题,还可以做这两步:

  • 检查并设置你的IDE/编辑器,把Java源代码文件的编码改成UTF-8;
  • 编译代码时加上-encoding UTF-8参数,比如用命令行编译时:javac -encoding UTF-8 YourMainClass.java,确保源代码中的中文在编译阶段就不会出现编码偏差。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:05:35