前言
Git使用中遇到的乱码问题总结,目前遇到的是下面这几种,有新遇到的再更新
以下乱码都是针对 Windows;
目录
- git log 中文显示为十六进制乱码
- git status 中文文件名显示为八进制乱码
正文
1. git log 中文显示为十六进制乱码
问题描述:运行git log
查看记录时,如果message是中文,则会显示为乱码,如下所示:
<E4><A1><1B><E4><A1><1B><E4><A1><1B><E4><A1><1B>
因为我是解决之后才写的这个总结,所以无法贴出原始的乱码,只能描述乱码的格式,如上所写类似16进制;
原因分析:是git-for-windows旧版本的问题;
解决办法:下载最新的git-for-windows安装即可;下载链接:Git - Downloading Package (git-scm.com)
2. git status 中文文件名显示为八进制乱码
问题描述:运行git status
查看工作区的状态时,如果文件名是中文,则会显示为乱码,如下所示:
E:\project\>git status
On branch master
Your branch is up to date with 'origin/master'.
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: "Git\345\210\206\346\224\257\350\267\237\350\270\252-\346\230\240\345\260\204.md"
这里的乱码其实是中文显示成了8进制;
原因分析:
- 是编码问题,通过下图的解释可以看到,当输出路径的字符为
unusual
时(即非通用字符,这里指的是ASCII中无法表示的字符,ASCII只能表示到0x7F),Git会对其进行转义; - 而中文肯定是不在这个通用字符中的,所以会进行转换;
- 通过将
core.quotepath
设置为false
可以关闭这个转换;
解决办法:修改配置,git config --global core.quotepath false
总结
如果是git log乱码,中文显示为十六进制,类似<E4><A1><1B><E4><A1>
这样,则可以通过下载新版本的git-for-windows来解决;
如果是git status乱码,中文文件名显示为八进制,类似\345\210\206
这样,则可以通过git config --global core.quotepath false
来解决;
评论区