gitのロシア語文字の問題
コマンドラインのWindowsでgitバージョンの使用を開始すると、次の問題が発生します。ロシア語の文字が表示されるすべてのgitメッセージは判読できません。 ロシア語のファイル名は「\ 362 \ 345 \ 361 \ 362」のようになり、コミットテキストは次のようになります- <C8> <ED> <E8> <F6> <E8> <E0> <EB> < E8> <E7> <E0> <F6> <E8> <FF> <EF> <F0> <EE> <E5> <EA> <F2> <E0> 。 つまり 元の文字列は、エンコーディングlatin1に従ってutf8に変換されます。
トラブルシューティング
たとえば、 C:ドライブにrepディレクトリを作成し、 testという新しいファイルを作成して、新しいリポジトリを初期化しました。 その後、彼は現在のディレクトリのすべてのファイルをリポジトリに追加しました。
C:\ rep> git init Cの初期化された空のGitリポジトリ:/rep/.git/ C:\ rep> git add。
ロシア語の文字を含むファイルは、問題なく読むことができるエンコードでは表示されないことがわかります。
C:\ rep> git status #ブランチマスター上 # #初期コミット # #未追跡ファイル: #(「git add <file> ...」を使用して、コミットされる内容に含めます) # # "\ 362 \ 345 \ 361 \ 362" コミットには何も追加されませんが、追跡されていないファイルが存在します(追跡するには「git add」を使用します)
このgitの動作を修正するには、 [core]セクションのquotepathパラメーターを変更して、 falseに設定する必要があります 。
quotepath = false
注意:グローバル設定ファイルまたはローカル設定ファイルのいずれかを変更できます。
グローバル設定ファイルは次の場所にありますC:\ Program Files \ Git \ etc \ gitconfig、ローカルリポジトリディレクトリ.git \ config
コミットの説明を編集すると、次の問題が発生します。
C:\ rep> git commit -a -s
8ビットエンコーディングでコミットを編集して保存すると、次のメッセージが表示されます。
警告:コミットメッセージはUTF-8に準拠していません。 メッセージを修正した後に修正するか、設定を設定することができます 変数i18n.commitencodingをプロジェクトが使用するエンコーディングに変更します。 [マスター(ルートコミット)cc05f8a]╚ЎЎЄЄサインオフ:maslakov <maslakov@mail.local> 1個のファイルが変更され、1個の挿入(+)、0個の削除(-) 作成モード100644 "\ 362 \ 345 \ 361 \ 362"
したがって、コミットの説明を入力するエンコーディングを[i18n]セクションのcommitencodingパラメーターで指定する必要があります。
commitencoding = cp1251
gitコンソールインターフェイスで作業するときに発生する3番目の問題は、ログ出力です。
C:\ rep> git log
デフォルトでは次のようになります
コミットcc05f8a470e8602ded60ba9c979c93148b334d4e 作成者:maslakov <maslakov@mail.local> 日付:2009年11月10日(火)12:37:38 2009 +0300 <C8> <ED> <E8> <F6> <E8> <E0> <EB> <E8> <E7> <E0> <F6> <E8> <FF> <EF> <F0> <EE> <E5 > <EA> <F2> <E0> サインオフ:maslakov <maslakov@mail.local>
検死が示したように、 lessユーティリティは「非難」し、環境変数LESSCHARSET = koi8-rを設定して、テキストを正しく表示するようにします。または単にcatユーティリティをビューアとして指定できます。 ページごとにテキストを表示するには、 catユーティリティの出力をmoreユーティリティに渡します。
さらに、 [i18n]セクションでlogoutputencodingパラメーターを設定する必要があります
logoutputencoding = cp866
原則として、上記の設定を行った後、8ビットエンコーディングで各国語を使用する場合の主な問題は解決されます。
これが私の\ .git \ configファイルです
[コア] repositoryformatversion = 0 filemode = false bare = false logallrefupdates = true symlinks = false ignorecase = true quotepath = false ページャー=猫| more.com エディター= far -e [i18n] commitencoding = cp1251 logoutputencoding = cp866
コミットのテキストをはるかに編集するため、 エディターパラメーターはfar -eとして定義されます
この情報が誰かに役立つことを願っています...
UPD:Alexey Shumkinの追加に感謝
ashu> less
www.linuxcenter.ru/lib/books/kostromin/gl_11_05.phtml
- LESSCHARSET=koi8-r ( Cygwin 1.5 )
UPD2:追加にご協力いただきありがとうございます
残念ながら、上記の解決策は、git diff、git showコマンドの出力におけるロシア文字の出力の問題を克服するのに役立ちませんでした。
インストールしたGitにiconv.exeをbinディレクトリにコピーし、Git configに次のように記述しました。
ページャー= iconv.exe -f cp1251 -t utf-8 | 少ない
それぞれcp1251エンコーディングのプロジェクトファイルがあります。
iconv.exeファイルは、Windows gnuwin32.sourceforge.net/packages/libiconv.htmの下のiconvプロジェクトのバイナリファイルを含むアーカイブをダウンロードすることで見つけることができます。
それに加えて、dllが必要です。
libcharset1.dll
libiconv2.dll(すでにGitがインストールされていて、置き換えられませんでした)
libintl3.dll(iconvのダウンロード元の依存関係アーカイブから)