如何让Git在控制台窗口中正确显示UTF-8编码的路径名?

exe*_*ook 52 git

我有UTF-8的文件名,git处理它们好,它会正确创建文件,github页面也显示正确.除了它将在下面的控制台中显示它.是否可以在控制台中正确显示git在ASCII 127之外显示UTF-8编码字符?

git status
# On branch master
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   .gitignore
#       modified:   editfile.js
#       modified:   "\321\203\321\201\321\202\320\260\320\275\320\276\320\262"
#
no changes added to commit (use "git add" and/or "git commit -a")
Run Code Online (Sandbox Code Playgroud)

UPDATE

我被问到我的语言环境,这里是locale命令的输出

LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
Run Code Online (Sandbox Code Playgroud)

Von*_*onC 100

git一直使用octal utf8显示,并且一种显示实际名称的方法是printf在bash shell中使用.

根据这个评论,这甚至可以在Windows msysgit bash中工作,它包括printf(并且可以用作" 如何在git checkout中使用八进制字符? ").

但这不会改变像git status或等命令的输出git ls-files.但是,由于Git 1.7.10引入了unicode的支持,这个wiki页面提到:

默认情况下,git将以引用的八进制表示法打印非ASCII文件名,即" \nnn\nnn...".这可以通过以下方式禁用:

 git config core.quotepath off
Run Code Online (Sandbox Code Playgroud)

或者对于所有使用的存储库:

 git config --global core.quotepath off
Run Code Online (Sandbox Code Playgroud)

请记住:

默认控制台字体不支持Unicode.将控制台字体更改为TrueType字体,例如Lucida Console或Consolas.
安装程序可以自动执行此操作,但仅适用于安装用户.

  • 这救了我的命! (3认同)
  • 另请参见[提交3a59e59](https://github.com/git/git/commit/3a59e5954ef19ac94522219c2f29d49a187d31d8)(2015年7月1日)由[卡斯滕Blees(`kblees`)](https://github.com/kblees).(通过合并[JUNIOÇ滨野 - `gitster` - ](https://github.com/gitster)在[提交81bc521](https://github.com/git/git/commit/81bc521af22a6549e93d33e57de40d335e0ee65b),03 2015年8月) (2认同)
  • @Luke 是否可以将要点内容包含在一个新的单独问题中?其他人将能够回答它。另外,gist.github.com 在工作中被屏蔽,所以我无法正确查看它。 (2认同)