把 Windows 控制台锁在 UTF-8,消除子进程输出乱码
30/100
综合分
0
GitHub 星标
53
npm 周下载
—/5
用户评分
数据截至 2026/9/16 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/VviLliAm-qwq/dsh-console-utf8.git状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
是什么
生态应用
桌面端 / Web 外壳,不以 dsh plugin add 安装
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 48 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
⚠︎ 实装验证未通过(unknown · 2026/11/4) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装仓库缺少 package.json,无法用 dsh 插件安装命令安装
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包dsh-console-utf8(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✗入口文件缺少入口声明
源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/8 06:33:48
安全扫描自动 · 静态分析源码v2.7.0⚪ 扫描:无法判定尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0已尝试扫描但取不到可分析的源码:仓库或包不存在、已删除,或为非 JS/TS 实现、未随包发布源码。无法判定,不代表安全。
- · 取源不可用(Error: github tarball HTTP 404 @ https:
- · api.github.com
- · repos
- · VviLliAm-qwq
- · dsh-console-utf8
- · tarball)
扫描于 2026/11/4(0 天前)
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery@deepseek-ai/cordis给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 保持UTF-8编码
- 消除子进程输出乱码
让 Windows 控制台在 dsh 宿主及其 bash 工具命令中保持代码页 65001(UTF-8),Windows 原生子进程的输出就不会再被解码成乱码
README
由 DeepSeek 最新模型翻译生成dsh-console-utf8
ci
English · 中文
把 dsh 宿主和 bash 工具命令所用的 Windows 控制台固定在代码页 65001(UTF-8),让 Windows 原生子进程的输出不再变成乱码。
问题是什么
dsh 的子进程层统一按 UTF-8 解码每个子进程的 stdout。而 bash 命令里调用的 Windows 原生工具 —— powershell.exe、cmd.exe、git.exe,甚至 chcp.com 自己 —— 是用控制台的 OEM 代码页输出的(中文系统 936/GBK,日文 932,美式英文 437)。这些字节被当成 UTF-8 读取后,其中每一个非 ASCII 字符都会被打碎:
| 控制台状态 | chcp 的输出 |
| 默认(936) | 本地化文案里的中文被替换成一串 U+FFFD |
| 执行 chcp 65001 之后 | Active code page: 65001 |
这不是「解码再努力一点」能解决的问题:控制台必须说出解码方所假定的那种编码。本插件做的只有这一件事。
展开完整文档(README 剩余 1 节)
dsh-console-utf8 ci English · 中文 把 dsh 宿主和 bash 工具命令所用的 Windows 控制台固定在代码页 65001(UTF-8),让 Windows 原生子进程的输出不再变成乱码。 问题是什么 dsh 的子进程层统一按 UTF-8 解码每个子进程的 stdout。而 bash 命令里调用的 Windows 原生工具 —— powershell.exe、cmd.exe、git.exe,甚至 chcp.com 自己 —— 是用控制台的 OEM 代码页输出的(中文系统 936/GBK,日文 932,美式英文 437)。这些字节被当成 UTF-8 读取后,其中每一个非 ASCII 字符都会被打碎: | 控制台状态 | chcp 的输出 | | 默认(936) | 本地化文案里的中文被替换成一串 U+FFFD | | 执行 chcp 65001 之后 | Active code page: 65001 | 这不是「解码再努力一点」能解决的问题:控制台必须说出解码方所假定的那种编码。本插件做的只有这一件事。 它做什么 - 宿主控制台(setHostConsole,默认开):用 chcp.com 把 dsh 宿主启动时所在的控制台切换到配置的代码页,然后回读实际生效的代码页并写进日志 —— 沙箱或异常区域设置可能出现「调用返回成功但代码页没变」,这种情况会被如实记录,而不是被当成成功。 - shell 钩子(shellHook,默认开):维护 ~/.dsh-tui/console-utf8.sh 并把 BASH_ENV 指向它,使每一次非交互 bash -c 都在自己的进程组里重新应用一次代码页。这覆盖了「shell 执行器在新控制台里拉起命令」的情形 —— 那种情况下代码页会退回系统默认值。 - 可诊断性:~/.dsh-tui/dsh-console-utf8.log 记录解析后的配置、切换前后的代码页以及钩子决策;超过 128 KiB 时裁掉旧的一半;node --test 下不写任何日志。 全程只写两个文件,都在 dsh 状态目录下:钩子与日志。不重写命令、不动 PATH、不打补丁到 shell 栈,除这两个文件外不读取任何用户文件。 安装 dsh plugin --profile add dsh-console-utf8 之后重启 TUI(/restart)—— 插件在挂载时动作。 手工安装:把包复制到 ~/.dsh/profiles//node_modules/dsh-console-utf8/,并把 "dsh-console-utf8" 追加进该 profile package.json 的 dsh.profile.bundles。包内声明了 dsh.bundle.patch,启动时会自行挂载。 兼容性 | 项 | 值 | | 平台 | 仅 Windows(win32);其他平台走 not win32 分支,什么都不改 | | 宿主 | dsh-tui,manifest v0.15 / v1alpha1 host facet | | Node | ^22.19 || >=24,纯 ESM | | 贡献面 | 无 —— 不注册命令、不申请权限、不声明契约、不使用接缝 | | shell 栈 | 任何经由 Windows 控制台执行命令的栈都受益;BASH_ENV 钩子只对 bash 生效(sh/dash 不受影响) | 配置 | 键 | 类型 | 默认 | 含义 | | enabled | boolean | true | 总开关。false 时插件照常挂载但什么都不做。 | | codePage | number | 65001 | 要强制使用的代码页。非必要不建议改。 | | setHostConsole | boolean | true | 切换宿主进程所在的控制台。 | | shellHook | boolean | true | 维护 BASH_ENV 钩子。 | | shimPath | string | '' | 钩子路径。留空表示 ~/.dsh-tui/console-utf8.sh。 | 已知限制 - 根因在上游:本插件让控制台迁就解码方的假设,并没有改变子进程层「一律按 UTF-8 解码」这件事。若宿主改为带回退的解码,这个插件就不需要了。 - BASH_ENV 是共享的:若已有其他工具把它设成了别的路径,插件会让位并记录原因,而不是覆盖它;可以把 shimPath 指向那个路径来接管,或关闭 shellHook。 - 只对 bash 生效:sh、dash、zsh、PowerShell 都不读这个钩子;命令自身重置代码页(如 chcp 936)会在下一条命令之前一直生效。 - 宿主那一半需要宿主真正拥有的控制台:当宿主启动时就没有自己的控制台 —— 无头探测如此,Windows 上 dsh-tui 的启动器也如此(它不把控制台句柄交给宿主)—— 每个 chcp.com 子进程会各自拿到一个新控制台,切换无法生效。此时插件记录警告而不谎报成功,改由 shell 钩子独自承担修复。已实测两次:0.1.0 的集成探测,以及真实重启后的 dsh-tui 会话。每次启动都会看到 host console code page … after asking for … 这条 warn,它不是故障。 - 按控制台生效,不是全系统:新建的控制台会回到系统默认值;需要全系统生效请改用系统的 UTF-8 区域设置。 - 每条 bash 命令多一次 chcp.com(几毫秒),输出已静默,不会混进工具结果。 - 不修复已经损坏的内容:剪贴板或文件里已经乱掉的字不会因此恢复。 - 已在 Windows 11 / CP936 系统区域设置下实测;其他代码页预期行为一致,但未实测。 开发 pnpm install npm run verify # 编码扫描 + 单测 + manifest + 发布包布局 node --test # 只跑单测 npm run check:encoding # BOM / 损坏序列扫描 npm run validate:manifest npm run pack:verify # 发布文件清单,以及「有没有模块漏进清单」 单元测试不会碰真实控制台或用户文件:代码页调用、钩子写入器与环境全部由外部注入。 发布 - 仓库:(公开) - 发布方式:vX.Y.Z tag(tag 必须等于 package.json 的 version)驱动 .github/workflows/release.yml,先跑完整校验链,再经 npm 可信发布(OIDC)带 provenance 上传——仓库内不存放任何令牌。 许可 MIT,见 LICENSE。 为 dsh-TUI 构建。
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
VviLliAm-qwq/dsh-console-utf8
把 Windows 控制台锁在 UTF-8,消除子进程输出乱码
相关插件 · UI / 主题
破甲增强版JeffKeeping/dsh-purge-plus
dsh-purge 的非官方分支fork:适配 DeepSeek Harness 0.2.1-rc.2、破甲内核…
★ 387已汉化DeepSeek 客户端
71.9
无代码业务系统平台nocobase/nocobase
NocoBase 是什么
★ 24,804已汉化DSH
71.8
1Panel 服务器面板1Panel-dev/1Panel
全球 250 万+ 自托管用户共同喜爱。
★ 37,350已汉化DSH
71.5
工作状态行动态ccch1mneyyy/working-activity
作者:chimney@ccch1mneyyy。社区项目,非 DeepSeek 官方项目。
★ 664已汉化DSH
71.2
多模型配置管家farion1231/cc-switch
跨平台桌面一体化助手,支持 Claude Code、Codex、OpenCode、DeepSeek Harness 等工具,唯一官网 ccswitch.io
★ 151,506已汉化DSH
71.1
AI 矢量设计工具ZSeven-W/openpencil
全球首个 AI 原生开源矢量设计工具。
★ 7,027已汉化DSH
71.1
这是你的仓库?认领条目