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のダウンロード元の依存関係アーカイブから)