vscode提示“此文件似乎是二进制”是因检测到不可打印字节而主动拦截,非错误;应禁用files.autoguessencoding并设false,再通过files.associations指定后缀为plaintext,或改用hex editor扩展处理。

VSCode 提示“此文件似乎是二进制”,本质是它检测到文件头或内容含大量不可打印字节(如 \x00、\xff),主动拒绝按文本解码——这不是错误,是安全拦截。想强制当文本看,有且仅有两种可靠路径:关自动编码识别 + 手动指定语言模式,或换用 Hex Editor 看原始字节。硬塞 UTF-8 会损坏文件,不推荐。
关掉 files.autoGuessEncoding 是前提
VSCode 默认对任何打不开的文件反复尝试各种编码(UTF-8、GBK、ISO-8859-1…),结果就是乱码叠加、卡顿、甚至崩溃。必须先禁用这个行为:
- 打开设置(
Ctrl+,或Cmd+,),搜files.autoGuessEncoding - 把它设为
false(不是off或空字符串) - 重启 VSCode —— 这步不能跳,否则设置不生效
用 files.associations 指定语言模式
仅关编码猜测还不够。VSCode 还会根据后缀判断是否“可编辑”,比如 .bin 默认被归为 binary 类型,连语法高亮都禁用。你需要显式告诉它:“这个后缀,就当纯文本”:
微软正式发布 Visual Studio Code 1.118 版本 。本次更新重点强化了 AI 开发体验与企业管理能力,其中最引人注目的是新增 Copilot CLI 远程控制功能,允许开发者通过手机或网页远程监控和接管 AI 会话 。同时,为了提高 AI 的运行性价比,新版本优化了令牌缓存策略以降低成本 。此外,1.118 版还引入了 Chronicle 本地历史追踪、TypeScript 7.0 支持以及更严格的企业级访问管控 。
- 在
settings.json里加一行:"*.bin": "plaintext"(把.bin换成你的真实后缀) - 值必须是
plaintext,不是text、binary或留空 - 如果文件已打开,改完设置后需右键标签页 →
Reopen with → Text Editor才能生效
为什么不用 "files.binary": false?
这个配置项早已被弃用(VSCode 1.70+ 移除),文档里还留着是历史遗留。设了也没效果,还会干扰其他设置。别碰它。
真要改二进制字节?别走文本路
如果你实际目标是修改 00 → FF、打补丁、调固件字段,那强制文本模式毫无意义——你看到的仍是解码失败后的乱码,根本不知道哪个字符对应哪个字节。此时唯一正解是装 Microsoft 官方 Hex Editor 扩展,再用 Hex Editor: Reopen as Hex 切过去。所有“用文本编辑器改二进制”的尝试,最终都会因字节序、换行符转换或编码重写导致文件损坏。
最常被忽略的细节:即使成功以文本模式打开了,VSCode 仍可能静默截断超长行、丢弃 \x00 字节、或在保存时插入 BOM —— 这些都不是 bug,是文本编辑器的固有行为。二进制操作没有“几乎正确”,只有全对或全毁。










