How to handle Asian characters in file names in Git on OS X

I’m on US-English OS X 10.6.4 and try to store files with Asian characters in its name in a Git repository.

OK, let’s create such a file in a Git working tree:

$ touch どうもありがとうミスターロボット.txt

Git is showing it as octal-escaped UTF-8 form:

$ git version
git version 1.7.3.1
$ git status
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#   "\343\201\250\343\202\231\343\201\206\343\202\202\343\201\202\343\202\212\343\201\213\343\202\231\343\201\250\343\201\206\343\203\237\343\202\271\343\202\277\343\203\274\343\203\255\343\203\233\343\202\231\343\203\203\343\203\210.txt"
nothing added to commit but untracked files present (use "git add" to track)

Unfortunately, I’m not able to add it to the Git repository:

$ git add どうもありがとうミスターロボット.txt
$ git status
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#   "\343\201\250\343\202\231\343\201\206\343\202\202\343\201\202\343\202\212\343\201\213\343\202\231\343\201\250\343\201\206\343\203\237\343\202\271\343\202\277\343\203\274\343\203\255\343\203\233\343\202\231\343\203\203\343\203\210.txt"
nothing added to commit but untracked files present (use "git add" to track)

Git simply ignored this file.

Using wildcards work:

$ git add *.txt
$ git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use "git rm --cached <file>..." to unstage)
#
#   new file:   "\343\201\250\343\202\231\343\201\206\343\202\202\343\201\202\343\202\212\343\201\213\343\202\231\343\201\250\343\201\206\343\203\237\343\202\271\343\202\277\343\203\274\343\203\255\343\203\233\343\202\231\343\203\203\343\203\210.txt"
#

but I want to invoke the Git command from an application for a specific file name. I don’t have the option to invent wildcard patterns which match exactly this file, but no one else.

Is this a known bug of Git or me not using Git correctly?

  • zsh length of a string with possibly unicode and escape characters
  • How to manipulate unicode-named files with subversion in Windows?
  • Can I make git recognize a UTF-16 file as text?
  • Unable to delete a file in git
  • Unicode in Git alias
  • How to handle accented characters in file names in Git on Mac OS X converted to unicode
  • How to change Unicode of a variable in PowerShell
  • why does git show unicode as binary?
  • 2 Solutions collect form web for “How to handle Asian characters in file names in Git on OS X”

    Git quotes any non-ascii character by default, not only asian ones. There’s an option to disable this quoting behaviour.

    You can disable it using the following command:

    git config --global core.quotepath false
    

    Or, alternatively, by adding the following snippet to your git config file ($HOME/.gitconfig usually)

    [core]
        quotepath = false
    

    After this, git should show your filenames exactly as they are.

    As to your other problem, git not adding a file with asian characters, I can only guess that it has to do with the encoding that git uses is not the same as the encoding your terminal uses. I hope someone else can jump in and explain that bit.

    All you need to do is to implement the IGit interface using your customised repository class (make sure each method is marked as virtual) and then cast this interface implementation against the GitX modular cohesion heap. I’ve done this before and it solved my problem.

    Git Baby is a git and github fan, let's start git clone.