根本原因是编码链断裂:提交输入、Git存储、终端渲染三者编码不一致;需统一设为UTF-8,包括i18n.logOutputEncoding、terminal.integrated.encoding、core.quotepath=false及Git Bash代码页65001。

Git 提交记录里中文显示为问号、乱码或 \344\270\200 类似转义序列,根本原因是编码链断裂——从提交时的输入编码,到 Git 存储元数据的编码,再到终端/VSCode 渲染时的解码方式,三者不一致。
git log 输出中文乱码:检查 i18n.logOutputEncoding 和终端实际编码
Git 本身不“显示”日志,它只是把字节流吐给终端;终端按自己的编码去解释,错配就乱码。重点不是 Git 配置错了,而是终端没按 UTF-8 解释。
-
git config --global i18n.logOutputEncoding utf-8是必须设的,但仅当终端也用 UTF-8 时才生效;若你在 Windowscmd(默认 GBK)里跑这条命令,Git 按 UTF-8 输出,cmd 按 GBK 解,必花 - VSCode 内置终端默认可能不是 Git Bash,而 PowerShell 或 cmd 对 UTF-8 支持不稳定;务必在设置里搜
terminal.integrated.defaultProfile.windows,手动设为Git Bash - Git Bash 启动后,运行
locale看输出,确认LANG是zh_CN.UTF-8或至少含UTF-8;若显示C或空,说明环境没加载 UTF-8 locale
git commit -m 输入中文失败:terminal.integrated.encoding 必须显式设为 utf-8
VSCode 的集成终端有自己的编码配置,和系统终端无关。即使 Git Bash 本身支持 UTF-8,VSCode 终端若没告诉自己“我按 UTF-8 解码”,输入框里敲中文就会被截断、丢字或回车后消失。
仅从仓库的暂存文件生成 Git 提交消息。当用户要求 Codex 根据暂存更改、缓存差异、Git 索引或已通过 `git add` 添加的文件来编写、起草、创建或建议提交消息时使用;切勿代表用户执行提交操作。
- 打开 VSCode 设置(
Ctrl+,),搜terminal.integrated.encoding,值必须是"utf8"(注意无短横,不是utf-8) - 这个配置项在 settings.json 中表现为:
"terminal.integrated.encoding": "utf8";设成utf-8会静默失效 - 改完别忘了重启 VSCode 终端(关掉所有 Terminal 标签页,再
Ctrl+Shift+`新开),否则旧会话仍沿用旧编码
文件名含中文却显示为 \344\270\200:core.quotepath false 是关键
Git 默认对非 ASCII 路径启用 quote-path 机制,把中文路径转成八进制转义字符串(如 "src/\344\270\200\345\205\203/index.js"),这不是乱码,是 Git 故意为之的“安全转义”。要让它原样显示,必须关掉。
- 执行
git config --global core.quotepath false,之后git status、git diff就会直接显示中文路径 - 该配置只影响路径显示,不影响提交信息或文件内容编码;但它和
i18n.commitencoding配合才能让整个流程统一 - 如果团队协作,建议把这个配置写进项目级
.git/config并提交,避免成员各自配置不一致
VSCode 源代码管理面板里中文提交信息仍是英文:界面汉化没做全
VSCode 的 Git 面板(源代码管理视图)文字来自两个地方:VSCode 自身 UI 字符串,以及 Git 命令输出。前者靠语言包,后者靠上面说的编码链。缺一不可。
- 先确认已安装微软官方
Chinese (Simplified) Language Pack for Visual Studio Code,且通过Configure Display Language命令选了zh-CN并重启 - Git 命令输出的中文(比如
git status的 “modified:”、“deleted:”)不会自动翻译——那是 Git 自己的本地化,Windows 上 Git for Windows 几乎不提供中文 locale 支持,所以别指望它输出中文状态提示 - 真正要解决的是你写的提交信息(
git commit -m "修复登录")能否被正确存储和读出;只要i18n.commitencoding=utf-8+ 终端 UTF-8 +core.quotepath=false全到位,git log和 VSCode 面板里的提交信息就能正常显示中文
最容易被忽略的是:Git Bash 的 Properties → Options → Active code page 必须是 65001,这个设置 VSCode 不继承,必须手动配;很多人只改了 VSCode 设置,忘了底层终端本身还没切到 UTF-8。

















