VSCode 文件乱码根本原因是编码不匹配,应先右下角切换编码(如GBK)恢复显示,再保存为UTF-8;关闭autoGuessEncoding、统一终端代码页为65001是关键。

VSCode 打开文件显示乱码(中文变问号、方块、符号)
根本原因是文件编码与 VSCode 当前识别/解码方式不匹配,尤其常见于 Windows 上用记事本保存的 GBK 文件,在 VSCode 默认以 UTF-8 解码时必然乱码。
- 先看右下角状态栏:点击显示的编码名称(如
UTF-8、GBK、ISO 8859-1),会弹出「Reopen with Encoding」和「Save with Encoding」两个选项 - 若已乱码,选「Reopen with Encoding」→ 尝试
GBK(简体中文 Windows 默认)、GB2312或Shift-JIS(日文)、EUC-KR(韩文) - 确认内容正常后,再点右下角编码 → 「Save with Encoding」→ 选
UTF-8保存,一劳永逸 - 避免反复切换:在
settings.json中设置默认解码策略,例如强制对某些后缀用 GBK:{ "files.encoding": "utf8", "files.autoGuessEncoding": false, "files.encodingHint": "utf8" }注意:
"files.autoGuessEncoding": false很关键——VSCode 的自动猜测常失败,关掉反而更稳。VSCode 字体发虚、等宽不齐、中文渲染模糊
不是字体本身问题,而是 VSCode 渲染引擎(Electron)与系统字体子像素抗锯齿、DPI 缩放、字体回退链之间的冲突。重点调三项:
-
"editor.fontFamily"必须显式指定中英文兼容字体,例如:"Fira Code, Microsoft YaHei, sans-serif"—— 英文用等宽编程字体,中文 fallback 到微软雅黑 -
"editor.fontLigatures"设为true仅当使用支持连字的字体(如 Fira Code、Cascadia Code),否则可能引发中文字符错位 - Windows 用户务必检查系统级设置:「设置 → 显示 → 自定义缩放」是否为非 100% 值(如 125%)。若开启,需在 VSCode 启动时加参数:
code --force-device-scale-factor=1,或在settings.json加:"window.zoomLevel": 0
(注意:
zoomLevel是相对缩放,不是系统 DPI)新建文件默认编码不是 UTF-8,每次都要手动切
VSCode 默认确实是
UTF-8,但如果你装过中文插件(如「Chinese (Simplified) Language Pack」)或修改过区域设置,可能被覆盖。真正决定新建文件编码的是files.defaultLanguage和全局files.encoding的组合行为。- 打开命令面板(
Ctrl+Shift+P),运行「Preferences: Open Settings (JSON)」 - 确保有且仅有这一行生效:
"files.encoding": "utf8"
不要写成
"utf-8"或"UTF8"—— VSCode 只认小写utf8这个关键字 - 如果项目里存在
.vscode/settings.json,它会覆盖用户级设置,记得检查该文件是否误写了"files.encoding": "gbk" - 极少数情况:Git 提交时因
.gitattributes强制设置了* text=auto,导致检出文件被 Git 转码。此时需在终端执行:git config --global core.autocrlf true(Windows)或false(macOS/Linux),并重置工作区
终端(Integrated Terminal)中文显示为方块或乱码
这是独立于编辑器的另一套编码逻辑,由 shell + 字体 + VSCode 终端仿真器共同决定。Windows 用户最常卡在这里。
- 先确认终端当前代码页:在集成终端中运行
chcp,Windows 默认是936(GBK)。而 VSCode 终端默认以 UTF-8 启动,二者不匹配 - 解决方法一(推荐):让 PowerShell/CMD 启动即切 UTF-8。在 VSCode 设置中搜
terminal.integrated.profiles.windows,修改对应 shell 配置:{ "terminal.integrated.profiles.windows": { "PowerShell": { "source": "PowerShell", "icon": "terminal-powershell", "args": ["-NoExit", "-Command", "chcp 65001"] } } }其中
65001是 UTF-8 的 Windows 代码页编号 - 解决方法二:改 VSCode 终端编码(不推荐)。在设置中搜
terminal.integrated.defaultProfile.windows,设为Command Prompt,再配合terminal.integrated.env.windows注入CHCP 65001 - 字体必须支持中文:在
settings.json中为终端单独指定字体,例如:"terminal.integrated.fontFamily": "Cascadia Code, Microsoft YaHei"
别只写
Microsoft YaHei—— 它不是等宽字体,会导致光标错位
字体渲染和编码看似是小问题,但牵扯到编辑器启动参数、系统区域策略、Git 行为、终端仿真层四层叠加。最容易被忽略的是:关闭
files.autoGuessEncoding和统一终端代码页这两步,比换字体管用十倍。 - 打开命令面板(
-









