Masalah
Bagaimana cara membuat git log
output perintah ditampilkan dengan benar pada command prompt windows?
Contoh
Seperti yang Anda lihat, saya dapat mengetik karakter diakritik dengan benar tetapi pada git log
output entah bagaimana lolos. Menurut UTF-8
tabel pengkodean , kode antara tanda kurung siku ( <
dan >
) dari output sesuai dengan git config
parameter yang diketik sebelumnya .
Saya telah mencoba mengatur LESSCHARSET
variabel lingkungan menjadi utf-8
seperti yang disarankan di salah satu jawaban untuk masalah serupa tetapi kemudian hasilnya kacau:
Saya tahu .git/config
dikodekan dengan benar utf-8
karena ditangani gitk
seperti yang diharapkan.
Berikut adalah locale
keluaran perintah jika perlu
LANG=
LC_CTYPE="C.UTF-8"
LC_NUMERIC="C.UTF-8"
LC_TIME="C.UTF-8"
LC_COLLATE="C.UTF-8"
LC_MONETARY="C.UTF-8"
LC_MESSAGES="C.UTF-8"
LC_ALL=
EDIT:
Outputnya juga sama di git-bash murni :
jadi saya yakin masalahnya adalah shell independen dan berkaitan dengan Git atau konfigurasinya sendiri.
sumber
Jawaban:
Oke, saya bereksperimen sedikit dan menemukan bahwa perintah Windows Git sebenarnya membutuhkan variabel UNIX seperti
LC_ALL
untuk menampilkan Polandia (atau karakter UTF-8 lainnya) dengan benar. Coba saja perintah ini:Kemudian nikmati hasilnya. Inilah yang terjadi di konsol saya (font "Consolas", tidak
chcp
perlu):Memperbarui:
type
(menampilkan file di konsol) berfungsi dengan benar, Anda memerlukannyachcp 65001
.cat
Anda mendapat untung dari yang disebutkan di atasset LC_ALL=C.UTF-8
.Pembaruan 2: Cara membuat perubahan permanen
Seperti yang dikatakan pengguna mono blaine , buat variabel lingkungan
LC_ALL
dan tetapkan nilainyaC.UTF-8
, baik secara global atau hanya untuk profil pengguna Anda sendiri (maaf untuk tangkapan layar Jerman):Lain kali Anda membuka konsol prosesor perintah (cmd.exe), Anda akan melihat nilai variabel saat mengeluarkan perintah
echo %LC_ALL%
. Di PowerShell, Anda akan melihatnya saat menerbitkan$env:LC_ALL
.Cara termudah untuk membuat halaman kode UTF-8 permanen ist untuk membuka
regeedit
dan menambahkan nilai baru bernamaAutorun
dari jenis string ke bagianHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor
dan menetapkan nilainyachcp 65001
.Selanjutnya, perintah ini akan dijalankan setiap kali Anda membuka konsol cmd.exe baru. Anda bahkan melihat keluarannya di jendela baru: "Aktive Codepage: 65001." (atau serupa dalam bahasa Anda masing-masing).
Oh, omong-omong: Untuk menampilkan file yang dikodekan UTF-8 dengan benar di PowerShell Anda dapat menggunakan
Get-Content -encoding UTF8 file.txt
ataucat -encoding UTF8 file.txt
(cat
menjadi alias untukGet-Content
di PowerShell).sumber
LC_ALL
tidak dibutuhkan oleh git itu sendiri. Alat lain - dikirimkan dengan git installaion - sepertiless
, yang merupakan pager default / lihat core.pager menggunakanLC_ALL
nilainya. Nilai valid lainnya adalah bahasa lokal misalnya:LC_ALL=de_DE.UTF-8
for the germans.setx LC_ALL C.UTF-8
$env.LC_ALL='ClUTF-8'
ke$Profile
Jika ada yang tertarik dengan PowerShell yang setara
set LC_ALL=C.UTF-8
, yaitu:Namun ini hanya berfungsi untuk sesi saat ini. Untuk membuatnya permanen, ada dua kemungkinan:
LC_ALL
dengan nilaiC.UTF-8
$env:LC_ALL='C.UTF-8'
dalam$Profile
file Andasumber
Saya menggunakan Git melalui Powershell Core v7.0.3 dengan posh-git diinstal di dalam Terminal Windows pada Windows 10.
Saya telah melihat-lihat jawaban dan mencoba banyak di antaranya. Solusi yang berhasil untuk saya adalah:
git config --global core.pager 'less --raw-control-chars'
$env:LC_ALL = 'C.UTF-8'
ke profil Powershell saat iniKedua solusi ini bekerja secara terpisah. Saya memilih untuk menggunakan perintah Git karena masalahnya tampaknya terkait dengan Git, dan profil Powershell tetap bersih.
sumber
$env:LESSCHARSET='utf-8'
berfungsi dengan baik juga untuk PowerShell 5 di Terminal Windows.Saya menggunakan
git bash
padaWIN10
. Bagi saya, 4 pengaturan membuat tampilan sesuai harapan saya.env
pengaturan. TambahkanLC_ALL=C.UTF-8
,LESSCHARSET=UTF-8
kePATH
secara global.git
config.git config --global i18n.logOutputEncoding utf-8
.git bash
pengaturan. SetelOptions-> Text-> Character set
keutf-8
. Atau aturlocale
danCharacter set
keduanya menjadidefault
. Cukup pintar untuk memilih yang benarencoding
.Selesai.
sumber
git
pada prompt perintah Windows, dan dua langkah pertama menyelesaikan masalah untuk kasus saya.Saya harus menggunakan command prompt windows PowerShell daripada yang default (Windowkey + X)
sumber
Saya punya masalah seperti itu di Linux. Dan masalahnya adalah saya tidak membuat lokal. Jadi keluaran saya
locale
adalah cantaining semua huruf "C", tanpa UTF-8. Untuk mengatasi ini, saya menghapus komentaren_US.UTF-8
danru_RU.UTF-8
di /etc/locale.gen. Kemudian saya menjalankan localectl set-locale LANG = ru_RU.UTF-8 dan mem-boot ulang. Dan masuk kembali ke sistem. Setelah itu ciryllic ditampilkan secara normal.sumber