VSCode无法直接检测选中文本的编码,仅支持整文件编码识别;需通过Hex Editor插件查看原始字节、命令面板逐个尝试Reopen with Encoding,或用file/iconv等终端命令验证,且files.autoGuessEncoding对已打开文件无效。

VSCode 里没法直接查选中文本的编码
VSCode 没有内置功能能告诉你「当前选中的这几行文字」用的是什么编码——它只管整个文件的编码,不分析局部字节。所谓“选定文本的编码”,本质是推断:这段内容是否符合某种编码的字节规则(比如 UTF-8 的多字节序列、GBK 的双字节范围)。你得靠间接方式验证。
用 Hex Editor 插件看原始字节,手动比对
这是最可靠的办法:跳过 VSCode 的自动解码,直视文件原始字节,再对照编码规范判断。
- 先装插件:
Hex Editor(官方维护,轻量无广告) - 打开目标文件后,右键编辑器 →
Reopen with Editor→ 选Hex Editor - 找到你选中的文本对应位置(比如中文“测试”,在 UTF-8 下是
E6 B5 8B E8 AF 95,在 GBK 下是B2E2 CA D4) - 对照标准编码表或用在线工具(如
https://www.soscisurvey.de/tools/utf8.php)反查字节含义
注意:如果看到大量 00 或 FF 字节,基本可判定是二进制或含 BOM 干扰,不是纯文本编码问题。
用命令面板执行 Change File Encoding 猜测
VSCode 的自动猜测只作用于整个文件,但你可以利用它的反馈来反推——乱码变清晰,说明猜对了。
- 选中疑似乱码区域,按
Ctrl+Shift+P(macOS 是Cmd+Shift+P) - 输入
Change File Encoding,回车 - 逐个试
UTF-8、GBK (cp936)、GB2312、Windows 1252,观察选区是否恢复正常 - 若某次
Reopen with Encoding后选中文本立刻可读,那大概率就是该编码
别依赖“猜测列表”第一个选项——VSCode 对 GBK 文件常误判为 Windows 1252,尤其当文件开头没 BOM 时。
终端里用 file -i 或 iconv -f 辅助验证
VSCode 编辑器内做不到的事,扔给系统工具更准。前提是文件已保存,且你有终端访问权限。
- 在 VSCode 集成终端中运行:
file -i your_file.txt(Linux/macOS),看输出里的charset= - 怀疑是 GBK 但显示乱码?试试:
iconv -f gbk -t utf8 your_file.txt | head -n 5,看前几行是否可读 - Windows 用户可用 PowerShell:
Get-Content .\file.txt -Encoding OEM(对应 GBK)或-Encoding UTF8
关键点:这些命令操作的是文件整体,不是选区;但只要选区是文件一部分,结果就具代表性。别忘了,iconv 不修改原文件,只是临时转换输出。
真正容易被忽略的是:VSCode 的 files.autoGuessEncoding 开关只影响新打开的文件,对已打开且正在编辑的文件无效——哪怕你改了设置,也得手动 Reopen with Encoding 才生效。


















