根本原因是core.quotepath默认为true,git将utf-8字节当作异常字符转义为八进制序列;执行git config --global core.quotepath false可直出中文名,但需终端编码匹配(如cmd需chcp 65001)。

git status 显示 \346\227\245\345\270\270 这类八进制乱码
根本原因是 core.quotepath 默认为 true,Git 把 UTF-8 字节当“异常字符”转义输出。终端看到的不是文件名本身,而是原始字节的八进制表示。
直接执行:git config --global core.quotepath false
这个操作不改 Git 内部存储,只影响命令行输出行为。设置后 git status、git diff、git ls-files 等都会直出中文名——但前提是终端编码能接住它。
- Windows CMD 下需先运行
chcp 65001切到 UTF-8,否则还是方块 - Windows Terminal 或 Git Bash 默认 UTF-8,设完即生效
- macOS / Linux 终端一般无需额外操作,但检查
locale输出是否含UTF-8更稳妥
git log 提交信息或文件名仍乱码
core.quotepath false 只管路径显示,log 的编码由另一套机制控制。常见组合错误是:commit 用 UTF-8 写,log 输出却按 GBK 解。
必须配齐这三项:
-
git config --global i18n.commitencoding utf-8(告诉 Git:你存的 commit message 是 UTF-8) -
git config --global i18n.logoutputencoding utf-8(告诉 Git:你输出 log 时也按 UTF-8 编码) -
export LESSCHARSET=utf-8(加到~/.bashrc或~/.zshrc,让分页器less正确渲染)
注意:i18n.logoutputencoding 在较新 Git 版本(2.31+)中已逐渐被弃用,但 Windows 上仍建议保留;macOS/Linux 用户可优先试 utf-8,若无效再换 en_US.UTF-8。
Windows 下 git add 后中文文件名在远程仓库显示为 %E6%97%A5%E5%B8%B8
这不是显示问题,是 Git 实际把文件名存成了 URL 编码——说明工作区文件系统编码和 Git 解析不一致,常见于老旧 Git 安装或 NTFS 限制触发。
关键检查点:
- 确认 Git 版本 ≥ 2.31:
git --version,旧版对 UTF-8 路径支持不完整 - 关闭 NTFS 保留名保护:
git config --global core.protectNTFS false(仅 Windows) - 避免混用 CMD 和 Git Bash 操作同一仓库:CMD 默认 GBK,Git Bash 默认 UTF-8,切换时未重载环境易导致路径解析错位
- 极端情况可手动编辑 Git 安装目录下的
etc/gitconfig,追加:[core]<br> outputEncoding = utf-8<br> logOutputEncoding = utf-8
ls 命令列中文文件名也乱码,连带影响 git status 感知
Git 依赖 shell 正确读取文件系统路径。如果 ls 本身都显示 ,Git 拿到的就是损坏路径,再怎么配也白搭。
分场景处理:
- Git Bash:编辑
/etc/inputrc,确保有这两行:set output-meta on<br>set convert-meta off
- macOS iTerm2 / Terminal:在终端设置里将「Text encoding」设为
Unicode (UTF-8),并确认LC_ALL和LANG环境变量是en_US.UTF-8或类似值 - Windows CMD:不用折腾,换用 Windows Terminal + Git Bash 组合更省心
最容易被忽略的是:终端字体本身不支持 Unicode。比如 CMD 默认的 “Raster Fonts” 就不渲染中文,必须手动换成 “Consolas” 或 “Microsoft YaHei Mono” 并启用 UTF-8 编码。











