VSCode怎么配置settings.json彻底解决乱码

浅伟小哥_3920

浅伟小哥_3920

2026-09-28

708人浏览

原创

vscode java乱码必须四层编码全对齐:源文件读取、编译器解析、终端输出、插件宿主,缺一不可;需先用reopen with encoding确认真实编码(如gbk),再配置files.autoguessencoding:false、[java]:{files.encoding:"utf8"}、java.configuration.compilerargs:["-encoding","utf-8"]及terminal.integrated.env.windows中java_tool_options。

vscode怎么配置settings.json彻底解决乱码

VSCode 乱码不是配错,是配不全——settings.json里只加一两行根本没用,必须覆盖「文件读取」「编译器解析」「终端输出」「插件宿主」四层编码链路,缺一不可。

确认真实编码再改配置,别瞎猜

右下角显示 UTF-8 但中文是方块?先别动 settings.json。点右下角编码标识 → 选 Reopen with Encoding → 尝试 GBK(不是 GB2312)。如果中文立刻恢复,说明磁盘里存的就是 GBK,后续所有配置都要围绕这个事实展开。

  • 误选错编码后直接点 Save with Encoding,会把已解错的乱码内容以新编码写回磁盘,原始中文永久丢失
  • UTF-8 with BOM 看似安全,但 javac 虽能忍,git diff 会报 Illegal character,Maven 构建可能失败
  • 用记事本保存过的 .java 文件,99% 是 GBK,别信右下角默认显示

Java 项目必须加这三行,少一行都不行

"files.encoding": "utf8" 只影响新建空文件,对已有乱码文件完全无效;"files.autoGuessEncoding": false 才是关键——关掉自动猜测,否则 VSCode 编辑时会悄悄用 GBK 重载老文件,你根本不知道。

Aria2 Json Rpc
Aria2 Json Rpc

通过 JSON‑RPC 2.0 与 aria2 下载管理器交互,使用自然语言命令管理下载、查询状态并控制任务。适用于 aria2、下载管理或种子操作。

下载
  • "[java]": { "files.encoding": "utf8" }:给 .java 文件单独指定,比全局设置更精准
  • "java.configuration.compilerArgs": ["-encoding", "UTF-8"]:强制 javac 用 UTF-8 解码源码,否则即使文件是 UTF-8,编译器也可能按系统默认 GBK 去读
  • 这三项必须同时存在,漏掉 compilerArgs,System.out.println("你好") 编译就报错

终端输出乱码和编辑器设置无关

你在编辑器里把文件全设成 UTF-8,运行后控制台还是 ????,这不是编辑器问题,是 Windows 终端代码页(chcp 返回 936)和 JVM 输出编码没对齐。

  • 在 settings.json 中加:"terminal.integrated.env.windows": { "JAVA_TOOL_OPTIONS": "-Dfile.encoding=UTF-8" }
  • 该配置让 JVM 强制用 UTF-8 编码输出,VSCode 终端渲染层才不会字节错位
  • chcp 65001 是临时方案,重启终端就失效;环境变量才是永久解法
  • 注意:这个配置只对 Java 生效,Python 或 C 需额外配 PYTHONIOENCODING=utf8 或 chcp 65001 在执行命令前

Output 面板乱码要动 Node.js 级别

插件日志、语言服务器通信、ESLint 报错等出现在 Output 面板里的中文变成 \u4f60\u597d 或空格,和 files.encoding、terminal.* 全部无关——这是 VSCode 插件宿主进程(基于 Node.js)默认未启用 UTF-8 模式。

  • "files.encoding" 对 Output 面板完全无效
  • 必须在系统级环境变量中设置:NODE_OPTIONS=--experimental-utf8(Node.js ≥18.17+)
  • 若无法升级 Node.js,可在插件代码中显式调用:process.stdout.setEncoding('utf8')
  • JSON 配置文件(如 .eslintrc.json)必须以 UTF-8 无 BOM 保存,否则保存即崩

最易被忽略的是:同一份配置在不同场景下生效范围完全不同——files.encoding 管打开,compilerArgs 管编译,JAVA_TOOL_OPTIONS 管运行时输出,NODE_OPTIONS 管插件后台。它们互不替代,也不能互相推导。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
js正则表达式
js正则表达式

php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。

2023.06.20

3836

8

js获取当前时间
js获取当前时间

JS全称JavaScript,是一种具有函数优先的轻量级,解释型或即时编译型的编程语言;它是一种属于网络的高级脚本语言,主要用于Web,常用来为网页添加各式各样的动态功能。js怎么获取当前时间呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.28

1215

5

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.03

1558

5

js是什么意思
js是什么意思

JS是JavaScript的缩写,它是一种广泛应用于网页开发的脚本语言。JavaScript是一种解释性的、基于对象和事件驱动的编程语言,通常用于为网页增加交互性和动态性。它可以在网页上实现复杂的功能和效果,如表单验证、页面元素操作、动画效果、数据交互等。

2023.08.17

9323

11

js删除节点的方法
js删除节点的方法

js删除节点的方法有:1、removeChild()方法,用于从父节点中移除指定的子节点,它需要两个参数,第一个参数是要删除的子节点,第二个参数是父节点;2、parentNode.removeChild()方法,可以直接通过父节点调用来删除子节点;3、remove()方法,可以直接删除节点,而无需指定父节点;4、innerHTML属性,用于删除节点的内容。

2023.09.01

860

4

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.04

2284

5

Js中concat和push的区别
Js中concat和push的区别

Js中concat和push的区别:1、concat用于将两个或多个数组合并成一个新数组,并返回这个新数组,而push用于向数组的末尾添加一个或多个元素,并返回修改后的数组的新长度;2、concat不会修改原始数组,是创建新的数组,而push会修改原数组,将新元素添加到原数组的末尾等等。本专题为大家提供concat和push相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.14

1449

5

js截取字符串的方法介绍
js截取字符串的方法介绍

JavaScript字符串截取方法,包括substring、slice、substr、charAt和split方法。这些方法可以根据具体需求,灵活地截取字符串的不同部分。在实际开发中,根据具体情况选择合适的方法进行字符串截取,能够提高代码的效率和可读性 。

2023.09.21

3849

3

js生成随机数方法
js生成随机数方法

JavaScript生成随机数的方法,包括使用Math.random()方法生成指定范围内的随机整数、生成随机字符串和生成随机颜色。根据具体需求,可以选择适合的方法来生成随机数,以实现各种功能 。

2023.09.25

2155

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程