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

Java中Scanner读取ÆØÅ字符显示问号乱码如何解决?

问题原因

Scanner读取系统输入时默认使用的字符集与终端输入的字符集不匹配,是出现特殊字符乱码的核心原因。JOptionPane为GUI组件,字符解码逻辑不受终端编码影响,因此可以正常识别ÆØÅ类特殊字符。你观察到的Digits字段为Scanner内置的数字识别字符集,和本次乱码问题无关。

解决方案

1. 显式为Scanner指定UTF-8字符集

实例化Scanner时主动传入UTF-8字符集参数,强制使用UTF-8解码输入内容,Java 7及以上版本可直接使用StandardCharsets常量:

import java.nio.charset.StandardCharsets;
import java.util.Scanner;

// 初始化时指定字符集
Scanner in = new Scanner(System.in, StandardCharsets.UTF_8);
String input = in.nextLine();

2. 调整VS Code编码配置

  • 打开VS Code设置页,搜索files.encoding,将值设置为utf8,同时开启files.autoGuessEncoding配置,避免文件本身编码异常
  • 搜索对应系统的终端集成配置:
    • Windows平台:搜索terminal.integrated.shellArgs.windows,为PowerShell添加启动参数:-NoExit -Command [Console]::OutputEncoding=[Text.Encoding]::UTF8
    • macOS/Linux平台:搜索对应shell的terminal.integrated.shellArgs配置,添加强制UTF-8编码的启动参数
  • 重启VS Code终端后再运行程序测试

3. Windows环境额外适配

如果上述配置仍不生效,运行程序前可先在终端执行chcp 65001命令,将控制台代码页切换为UTF-8后再启动Java程序。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 21:54:03