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

Windows终端中Java程序System.in的UTF-8编码适配问题求助

解决Windows终端(CMD/PowerShell)中Java多语言字符输入输出乱码问题

核心问题

Windows终端默认编码(如GBK/936)与程序所需的UTF-8编码不匹配,且Java的System.in/System.out默认继承系统编码,导致中日韩等多语言字符在输入输出时出现乱码、匹配失败。

步骤一:配置终端为UTF-8并启用多语言字体

CMD操作

  1. 打开CMD后,执行命令切换到UTF-8代码页:
    chcp 65001
    
  2. 右键CMD窗口标题栏 → 属性 → 字体,选择支持中日韩字符的字体(如Consolas、微软雅黑),避免韩文等字符显示为方块。

PowerShell操作

执行以下命令强制设置终端输入输出编码为UTF-8:

[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
[Console]::InputEncoding = [System.Text.Encoding]::UTF8

步骤二:修改Java代码,显式指定UTF-8编码

需同时强制指定输入流和输出流的UTF-8编码,避免依赖系统默认编码:

import java.io.*;
import java.nio.charset.StandardCharsets;

public class Main {
    public static void main(String[] args) {
        // 用UTF-8包装标准输入流
        try (BufferedReader reader = new BufferedReader(
                new InputStreamReader(System.in, StandardCharsets.UTF_8))) {
            // 用UTF-8包装标准输出流,自动刷新缓冲区
            PrintWriter writer = new PrintWriter(
                    new OutputStreamWriter(System.out, StandardCharsets.UTF_8), true);

            String expected = "aaa你好123桜色舞うころbbb보여줄게456";
            writer.println("请复制以下行的内容粘贴到控制台并按回车结束。");
            writer.println(expected);
            writer.print("请输入:");
            
            String line = reader.readLine();
            
            writer.println("你输入的内容为:" + line);
            writer.println("输入内容与预期是否一致:" + expected.equals(line));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

步骤三:编译并运行程序

Java 8及版本(先编译再运行)

  1. 编译时指定源码编码为UTF-8,避免源码中字符编译错误:
    javac -encoding UTF-8 Main.java
    
  2. 运行时指定JVM编码为UTF-8:
    java -Dfile.encoding=UTF-8 Main
    

Java 16+(单文件直接运行)

直接用以下命令运行,同时指定源码编码和JVM编码:

java -Dfile.encoding=UTF-8 -encoding UTF-8 Main.java

为什么之前的修改无效?

  1. 仅给Scanner指定UTF-8,但System.out仍使用系统默认编码,导致输出乱码;
  2. 使用GBK编码的Scanner在UTF-8终端下读取输入时,会将UTF-8字节错误解码为GBK,导致字符损坏;
  3. 单独设置-Dfile.encoding无法覆盖终端与JVM之间的编码对齐问题,必须显式包装输入输出流强制指定UTF-8。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 04:56:02