问题描述
当使用 git status 查看仓库状态时,中文字符被显示为转义的八进制序列,例如:
"\346\224\277\347\240\201\346\226\207\346\241\243.md"
而不是正常显示中文名:
"代码文档.md"
原因分析
这是由于 git 的 core.quotePath 配置项默认设置为 true,导致非 ASCII 字符被转义显示。
解决方案
方案一:配置 core.quotePath(推荐)
关闭路径转义功能,让 git 直接显示非 ASCII 字符:
git config --global core.quotePath false
说明:
--global表示对所有仓库生效- 如果只对当前仓库生效,去掉
--global参数
方案二:设置环境变量
设置 LESSCHARSET 环境变量为 UTF-8:
export LESSCHARSET=utf-8
持久化配置:
将上述命令添加到 ~/.bashrc 或 ~/.zshrc 文件中:
echo 'export LESSCHARSET=utf-8' >> ~/.bashrc
source ~/.bashrc
方案三:临时使用(不修改配置)
使用 -c 参数临时关闭路径转义:
git -c core.quotePath=false status
验证
执行以下命令验证配置是否生效:
git status
现在应该能正常显示中文文件名。
终端编码要求
确保终端支持 UTF-8 编码:
检查当前语言设置
echo $LANG
正常输出应该类似:
en_US.UTF-8zh_CN.UTF-8
临时设置编码
如果编码不正确,可以临时设置:
export LANG=zh_CN.UTF-8
export LC_ALL=zh_CN.UTF-8
永久设置编码
编辑 ~/.bashrc 或 ~/.zshrc,添加:
export LANG=zh_CN.UTF-8
export LC_ALL=zh_CN.UTF-8
然后执行:
source ~/.bashrc
相关 Git 配置
查看当前 git 配置:
git config --global --list | grep quotePath
查看当前仓库配置:
git config --local --list | grep quotePath
总结
推荐使用 方案一,配置简单且一劳永逸:
git config --global core.quotePath false
这样配置后,git 的所有输出(status、log、diff 等)都会正确显示中文文件名。