VS Code中Java代码输出下标9的Unicode值异常(显示为0)
Java代码读取下标9字符时Unicode值为0的原因及解决办法
核心原因
问题出在VS Code终端的输入编码与Java Scanner默认字符集不匹配:
- Windows系统即使设置了UTF-8区域,VS Code集成终端可能未同步使用UTF-8编码,导致输入的特殊字符(如下标₉,Unicode 8329)无法被正确识别,被转换成空字符
\u0000(对应int值0)。 - Java的
Scanner默认使用JVM的系统默认字符集读取输入,若该字符集与终端输入编码不一致,就会出现字符解析错误。而repl.it的环境默认统一使用UTF-8编码,所以能正常读取。
验证与解决办法
1. 强制Scanner使用UTF-8读取输入
修改代码中Scanner的初始化语句,显式指定UTF-8字符集:
import java.util.Scanner; class JavaTest { public static void main(String args[]) { // 显式指定UTF-8编码读取输入 Scanner sc = new Scanner(System.in, "UTF-8"); String lower = sc.next(); char[] arr = lower.toCharArray(); System.out.println((int)arr[0] + " " + (int)'₉'); sc.close(); } }
2. 配置VS Code终端为UTF-8编码
在VS Code的settings.json中添加以下配置,确保终端默认使用UTF-8:
{ "terminal.integrated.defaultProfile.windows": "Command Prompt", "terminal.integrated.shellArgs.windows": ["-NoExit", "/c", "chcp 65001"] }
或者每次运行代码前,先在终端手动执行chcp 65001切换到UTF-8编码,再运行Java程序。
3. 补充说明
你的Python代码能正常运行,是因为Python在Windows环境下默认会适配终端的编码设置,而Java的Scanner对编码的兼容性需要显式配置。
内容的提问来源于stack exchange,提问作者Rikki Koppolu
相关产品推荐
相关产品推荐

