chore(scripts): doc-links 检查器在 GBK 代码页下崩溃修复

- 钩子环境为系统代码页 936(GBK)时,打印含 U+26A0 等字符的告警列表
  触发 UnicodeEncodeError,检查器以退出码 1 崩溃(假阴性变假阳性拦截)
- 修复:入口处对 stdout/stderr reconfigure(encoding=utf-8, errors=replace)
- 验证:GBK 复现 traceback → 修复后跑完;Compare-Object 逐行比对修复前后
  正常环境输出字节一致;py_compile OK;无 BOM 变化
- 由 N34 任务队友 fix-doclinks-encoding 实施,Lead 复核
This commit is contained in:
2026-10-13 11:22:43 +08:00
parent 13a4a40a14
commit 8f902e09fd
+8
View File
@@ -35,6 +35,14 @@ import pathlib
import urllib.parse
from collections import Counter
# 控制台编码兜底:Windows 中文控制台(pre-commit 钩子环境,代码页 936/GBK)下打印
# ⚠️/📋 等非 GBK 字符会抛 UnicodeEncodeError → 钩子带 traceback 以退出码 1 死亡,
# 而这类告警本身「不拦提交」。启动处统一把 stdout/stderr 切到 UTF-8 + errors="replace"
# 兜底;hasattr 守卫兼容 stdout/stderr 被替换成无 reconfigure 的对象(如 None)。
for _stream in (sys.stdout, sys.stderr):
if hasattr(_stream, "reconfigure"):
_stream.reconfigure(encoding="utf-8", errors="replace")
REPO_ROOT = pathlib.Path(__file__).resolve().parent.parent
# 不参与检查的路径片段(第三方/生成物/外部资料)