git中文文件名、目录名乱码 log 应该怎么解决

本文提供了针对Git在Windows环境下处理中文文件名及日志时出现乱码问题的详细解决方案,包括配置git参数、修改相关文件内容等步骤。

以下在git log时无效:

git config --global core.quotepath false  		# 显示 status 编码
$ git config --global gui.encoding utf-8			# 图形界面编码
$ git config --global i18n.commit.encoding utf-8	# 提交信息编码
$ git config --global i18n.logoutputencoding utf-8	# 输出 log 编码
$ export LESSCHARSET=utf-8


windows 下:set LESSCHARSET=utf-8  有用(可以环境变量中设置)


在查看修改历史时,对于中文文件名,git log和gitk都会出现类似的乱码:

sepg\344\274\232\350\256\256\346\200\273\347\273\223.doc


通过看git的源码,找到了解决方案:

git config core.quotepath false

core.quotepath设为false的话,就不会对0x80以上的字符进行quote。中文显示正常




Git for windows 中文乱码解决方案

1.使用 git add 命令添加文件名含中文字符的文件时

1.1 乱码类似:
    \316\304\261\276\316\304\265\265.txt
1.2 解决方案:

编辑 C:\Git\etc\inputrc 文件中对应的行,查找以下2行,并修改其值,
原先:

    
    set output-meta off
    set convert-meta on

改为:

    
    set output-meta on
    set convert-meta off

2.使用git log查看含有中文的log信息时

2.1 乱码类似:
    <E4><BF><AE><E6><94><B9><E6><96><87><E6><9C><AC><E6><96><87><E6><A1><A3>
2.2 解决方案:

在Bash提示符下输入:


    git config --global i18n.commitencoding utf-8
    git config --global i18n.logoutputencoding gbk

注:设置 commit 提交时使用 utf-8 编码,可避免 Linux 服务器上乱码;同时设置在执行 git log 时将 utf-8 编码转换成 gbk 编码,以解决乱码问题。
编辑 C:\Git\etc\profile 文件,添加如下一行:

    export LESSCHARSET=utf-8

注:以使git log可以正常显示中文(需要配合:i18n.logoutputencoding gbk

3.使用ls命令查看含有中文的文件名乱码时

3.1 乱码类似:
    
    ????.txt
    ???????.md
3.2 解决方案:

使用 ls --show-control-chars 命令来强制使用控制台字符编码显示文件名,即可查看中文文件名。
为了方便使用,可以编辑 C:Gitetcgit-completion.bash 文件,添加如下一行:

    alias ls="ls --show-control-chars"

4.在Git Gui中查看UTF-8编码的文本文件时

4.1 乱码类似:
    锘夸腑鏂囨枃妗£
4.2 解决方案:

在Bash提示符下输入:

    git config --global gui.encoding utf-8

注:通过上述设置,UTF-8 编码的文本文件可以正常查看,但是 GBK 编码的文件将会乱码,所以还是没有从根本上解决问题。

可行的方法之一为:将所有文本文件的编码统一为 UTF-8 或 GBK,然后设置相应的gui.encoding 参数为 utf-8gbk

注:本文参考他人成功,非完全原创。

这篇写得很全。我要补充一点。按照这篇文章进行设置,可能在git bash中仍然中文乱码。这时候,需要设置git bash的字符编码为utf-8。右键,在options中设置。


第一个文件名的乱码问题 在我win10的系统上我用的2.11版的git for windows原先是

set output-meta on
set convert-meta off
改成
set output-meta off
set convert-meta on

解决问题,和作者写的正好相反


以上在git log时无效:

git config --global core.quotepath false  		# 显示 status 编码
$ git config --global gui.encoding utf-8			# 图形界面编码
$ git config --global i18n.commit.encoding utf-8	# 提交信息编码
$ git config --global i18n.logoutputencoding utf-8	# 输出 log 编码
$ export LESSCHARSET=utf-8


windows 下:set LESSCHARSET=utf-8  有用(可以环境变量中设置)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值