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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 05:01:36