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

求助:Windows Terminal中Java 21无法输出Emoji的解决办法

解决Windows Terminal + Java 21的Emoji输出问号问题

以下是针对你的场景的有效排查和解决步骤:

  • 强制Java输出流使用UTF-8编码
    Java 21可能未自动适配Windows Terminal的UTF-8环境,需要显式指定输出流编码,替代默认的控制台编码检测。示例代码:

    import java.io.OutputStreamWriter;
    import java.io.PrintWriter;
    import java.nio.charset.StandardCharsets;
    
    public class EmojiTest {
        public static void main(String[] args) {
            try (PrintWriter out = new PrintWriter(
                    new OutputStreamWriter(System.out, StandardCharsets.UTF_8), true)) {
                out.println("🥲");
            }
        }
    }
    
  • 修正Windows Terminal配置

    1. 打开Windows Terminal设置,进入你使用的终端配置文件(如PowerShell/Command Prompt)
    2. 在「高级」选项中,将默认编码设置为UTF-8
    3. 确认终端字体支持Emoji,推荐使用Segoe UI Emoji或Noto Color Emoji
  • 添加JVM启动参数
    运行Java程序时,通过参数强制指定编码,避免JVM自动选择错误的编码:

    java -Dfile.encoding=UTF-8 -Dsun.stdout.encoding=UTF-8 -Dsun.stderr.encoding=UTF-8 EmojiTest
    

    如果用IDE运行,需在运行配置的「VM参数」中添加上述内容。

  • 确保环境变量生效
    检查系统环境变量JAVA_TOOL_OPTIONS是否设置为-Dfile.encoding=UTF-8,设置后重启Windows Terminal再运行程序,避免环境变量未加载。

注:echo能正常显示是因为Windows Terminal直接处理其输出,而Java的输出流存在额外的编码转换层,必须显式对齐编码设置才能匹配终端的UTF-8环境。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 01:43:12