質問: 0.最初に ----- こんにちは。 前回に引き続き、「Git for Windows」の日本語文字化けについて質問がございます。 1.質問内容 ------ 以下の2件について、ご相談です。 1 git log で、コミットメッセージが文字化けしています。日本語で表示させたいです。 ``` $ git log ``` ``` add<81><98><8E><82><92><8A> ``` 2 $ git commit --amend で、直前のコミットのコミットメッセージがエディタで表示されていますが、そのコミットメッセージが文字化けしています。これも同様に日本語で表示させたいです。 ``` $ git add sample.txt $ git commit --amend ``` ``` add▒~A▒説▒~X~N▒~B~R追▒~J| # Please enter the commit message for your changes. Lines starting # with '#' will be ignored, and an empty message aborts the commit. # # Date: Mon Jul 16 23:17:56 2012 +0900 # # On branch master # Changes to be committed: # modified: sample.txt # ~ ~ ``` インターネットで検索していると、nkfをインストールすることが解決する方法かと思いましたが、 まずはご相談してみようと思いました。 何卒よろしくお願いします。 2.開発環境 ------ ◆Git for Windows ⇒ 改行コードの自動変換は、「Checkout as-is, commit Unix-style line endings」を選択しています。この場合、チェックアウト時は改行コードを変換せず、コミット時のみ[CR+LF]を[LF]に変換するようになります。 ⇒ それ以外は、デフォルトでチェックされているものでインストールしました。 ◆Gitクライアント「TortoiseGit」 ⇒ コミットやプッシュはこちらを利用しております。 ◆PowerShell
回答: PowerShellであれば`Set-Item env:LANG -Value ja_JP.UTF-8`を、 コマンドプロンプトであれば`set LANG=ja_JP.UTF-8`を、 Git Bashであれば(たぶん不要だけど)`export LANG=ja_JP.UTF-8`を、 それぞれ実行し、環境変数"LANG"を"ja_JP.UTF-8"に設定してみてください。 ほとんどのgitのツール類ではコメントはUTF-8で保存しています。GitHub等もUTF-8であることが前提です。しかし、現在の環境がUTF-8の文字列を表示できるとは限りません。そこでgitコマンドにUTF-8が使えますよと教えてあげる必要があります。それが環境変数"LANG"です。 Windowsでは馴染みが無いかも知れませんが、UNIX/Linuxでは言語やエンコードの環境を教えてあげるための一般的な環境変数です。Gitは元々Linuxカーネルを管理するために作られたこともあり、UNIX/Liunxの流儀に合わせています。なので、"LANG"をみて、UTF-8が使えるかどうかを判断します。 もし、UTF-8が使えないという話の場合は、ASCII文字だけで表示できるようにします。ASCIIに該当しない文字は各バイトを<16進数2桁>という表示にするというルールになります。 なお、commit時についてはプロンプトの文字コード、エディタの設定、gitの設定によってはUTF-8がうまく表示されない書き込まれない場合があります。通常のコマンドプロンプトやPowerShellでgitのコメントを書いたりすることは避けた方が無難です。Git for WindowsのGit Bashを使うか、エディタなどのGit機能を使った方が良いでしょう。