From 8f902e09fda10b6e42189e0bfdbe7fc1faf39ca2 Mon Sep 17 00:00:00 2001 From: Wanderingss <1624155937@qq.com> Date: Tue, 13 Oct 2026 11:22:43 +0800 Subject: [PATCH] =?UTF-8?q?chore(scripts):=20doc-links=20=E6=A3=80?= =?UTF-8?q?=E6=9F=A5=E5=99=A8=E5=9C=A8=20GBK=20=E4=BB=A3=E7=A0=81=E9=A1=B5?= =?UTF-8?q?=E4=B8=8B=E5=B4=A9=E6=BA=83=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 钩子环境为系统代码页 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 复核 --- scripts/check_doc_links.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/scripts/check_doc_links.py b/scripts/check_doc_links.py index 5f924e0b..764ca38e 100644 --- a/scripts/check_doc_links.py +++ b/scripts/check_doc_links.py @@ -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 # 不参与检查的路径片段(第三方/生成物/外部资料)