Git中文乱码主因是路径转义与编码不一致:路径乱码因core.quotepath默认true,设false即可;log乱码需配i18n.logoutputencoding、i18n.commitencoding及LESSCHARSET;终端显示异常应调Locale和UTF-8环境变量;平台乱码须统一提交编码并确保源文件UTF-8。

git status 显示中文文件名乱码
根本原因不是编码错了,而是 Git 默认把中文路径当成“危险字符”转义了。它用八进制序列(比如 \345\271\277)代替真实汉字,本质是安全策略,不是 bug。
解决只需一条命令:git config --global core.quotepath false
- 这个设置告诉 Git:别转义 >0x80 的字节,原样输出路径
- 只影响
git status、git diff --name-only、git log --name-only等带路径输出的命令 - 不影响提交、克隆、检出等核心操作,也无兼容性风险
- 如果已设过但无效,检查是否被项目级配置覆盖:
git config --local core.quotepath
git log 提交信息中文乱码
这通常发生在 Windows Git Bash 或旧版 MSYS2 环境里,因为 git log 默认用 less 分页,而 less 拿不到 UTF-8 编码提示。
要让日志正文正常显示,得配三样东西:
-
git config --global i18n.logoutputencoding utf-8(告诉 Git 输出时保持 UTF-8) -
git config --global i18n.commitencoding utf-8(确保你 commit 时用的是 UTF-8,不是 GBK) -
export LESSCHARSET=utf-8(加到~/.bashrc或~/.zshrc,让less正确解码)
注意:i18n.logoutputencoding 不是万能开关——它只在 Git 内部做编码转换;如果原始 commit 是用 GBK 提交的,改这个也没用,得从源头重提。
Git Bash 终端本身显示或输入中文异常
这不是 Git 的问题,而是终端环境没对齐 UTF-8。常见表现:用 ls 看中文文件名是方块,或者输中文 commit 时卡顿/乱码。
关键检查点:
- 右键 Git Bash 窗口 → Options → Text → Locale 设为
zh_CN或en_US,Character set 必须是UTF-8 - 在
~/.bashrc末尾加两行:export LANG=en_US.UTF-8export LC_ALL=en_US.UTF-8 - 别动
inputrc里的convert-meta—— 新版 Git Bash(2.40+)已默认关闭转义,手动改反而容易冲突
云效、Gitee、GitHub 等平台合并请求里中文乱码
这类问题往往和本地设置无关,而是服务端解析 commit message 时用了错误编码。尤其当团队混用 Windows(GBK)和 macOS/Linux(UTF-8)提交时,容易出现。
真正有效的做法只有两个:
- 强制统一提交编码:所有人执行
git config --global i18n.commitencoding utf-8,并禁用编辑器自动识别编码(比如 VS Code 关掉 “Guess Encoding”) - 检查文件本身编码:中文注释或字符串乱码,大概率是源文件存成了 GBK。用
file -i filename.py或编辑器底部状态栏确认,然后另存为 UTF-8(不含 BOM)
平台侧的“设置编码为 UTF-8”选项基本是摆设,别依赖。乱码一旦进历史,就只能靠 git rebase -i 重写 commit message,成本远高于预防。


















