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

VS Code中Java Scanner无法识别特殊字符问题求助

VS Code中Java Scanner读取特殊字符乱码问题解决办法

问题描述

在VS Code中进行Java开发时遇到特殊字符处理异常:

  • 直接通过System.out.println输出特殊字符(如á, é, í, ó, ú)显示正常
  • 使用Scanner从控制台输入含特殊字符的字符串,或从文件读取这类字符串时,特殊字符无法被正确识别
  • 相同场景下Python代码、Eclipse IDE均能正常处理特殊字符,且已确认VS Code默认编码为UTF-8

测试用Java代码:

Scanner sc = new Scanner(System.in);

System.out.println("System.out.print -> á, é, í, ó, ú");

System.out.print("Input -> ");
String i = sc.nextLine();

System.out.println("Output -> " + i);

解决方案

1. 为Scanner指定UTF-8编码

修改Scanner初始化代码,明确指定输入流使用UTF-8编码,避免依赖系统默认编码:

Scanner sc = new Scanner(System.in, "UTF-8");

2. 配置Java运行VM参数

在VS Code的launch.json中添加VM参数,强制JVM使用UTF-8编码处理文件和输入输出:

  1. 打开.vscode/launch.json文件
  2. 在configurations数组的对应配置中添加vmArgs字段:
{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "java",
            "name": "Current File",
            "request": "launch",
            "mainClass": "${file}",
            "vmArgs": "-Dfile.encoding=UTF-8"
        }
    ]
}

3. 确认终端编码为UTF-8

检查VS Code终端的编码设置:

  • 点击终端右上角的齿轮图标
  • 选择「编码」→「UTF-8」

原因说明

Java的Scanner默认使用系统环境编码(如Windows系统默认GBK),而VS Code控制台默认使用UTF-8编码,两者编码不一致导致特殊字符解析乱码。Python和Eclipse会自动适配控制台的UTF-8编码,因此不会出现该问题。

内容的提问来源于stack exchange,提问作者Mark Silván

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 16:42:15