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编码处理文件和输入输出:
- 打开
.vscode/launch.json文件 - 在
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
相关产品推荐
相关产品推荐

