When I created some file which contains Chinese Character and wanted to show which files were untracked using git status
, some unrecognized character were shown there:
$ touch 測試
$ git status
On branch pink-page
Untracked files:
(use "git add <file>..." to include in what will be committed)
"\346\265\213\350\257\225"
This is very inconvenient for snapshot. Remember the filename is impossible.
Fortunately, you can use git-config to solve this problem.
$ git config --global core.quotePath false
$ git status
On branch pink-page
Untracked files:
(use "git add <file>..." to include in what will be committed)
測試
It’s amazing! The reason behind this miracle is:
core.quotePath
Commands that output paths (e.g. ls-files, diff), will quote “unusual” characters in the pathname by enclosing the pathname in double-quotes and escaping those characters with backslashes in the same way C escapes control characters (e.g. \t for TAB, \n for LF, \ for backslash) or bytes with values larger than 0x80 (e.g. octal \302\265 for “micro” in UTF-8). If this variable is set to false, bytes higher than 0x80 are not considered “unusual” any more. Double-quotes, backslash and control characters are always escaped regardless of the setting of this variable. A simple space character is not considered “unusual”. Many commands can output pathnames completely verbatim using the -z option. The default value is true.
Any of the Chinese character’s byte value is obviously larger than 0x80 (i.e. 128 in decimal), so all these characters in pathname will not be human readable if core.quotePath
is true (default).
Reference
How to convert 0x80 in to 128?
本作品採用《CC 協議》,轉載必須註明作者和本文連結