Comment rendre la sortie de la commande git log
correctement affichée à l’invite de commande Windows?
Comme vous pouvez le voir, je peux taper correctement les caractères diacritiques mais sur git log
, la sortie est échappée. Selon UTF-8
table de codage les codes entre les crochets (<
et >
) de la sortie correspondent aux paramètres git config
précédemment saisis.
J'ai essayé de définir la variable d'environnement LESSCHARSET
sur utf-8
comme indiqué dans une des réponses au problème similaire mais le résultat est alors tronqué:
Je sais que .git/config
est correctement codé avec utf-8
car il est géré par gitk
comme prévu.
Voici la sortie de la commande locale
si nécessaire
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=
La sortie est la même aussi dans pure git-bash:
je pense donc que le problème est indépendant de Shell et concerne Git ou sa configuration elle-même.
D'accord, j'ai un peu expérimenté et découvert que les commandes Windows Git avaient besoin de variables UNIX telles que LC_ALL
pour pouvoir afficher correctement le polonais (ou d'autres caractères UTF-8). Essayez juste cette commande:
set LC_ALL=C.UTF-8
Alors profitez du résultat. Voici ce qui s'est passé sur ma console (police "Consolas", pas de chcp
nécessaire):
Mettre à jour:
type
(fichier d’affichage sur la console) fonctionnent correctement, vous avez besoin de chcp 65001
.cat
, vous profitez du set LC_ALL=C.UTF-8
susmentionné.Mise à jour 2: Comment rendre les modifications permanentes
Comme l'utilisateur blaine mono} _ a dit, créez une variable d'environnement LC_ALL
et attribuez-lui la valeur C.UTF-8
, globalement ou uniquement pour votre propre profil utilisateur (désolé pour la capture d'écran en allemand):
La prochaine fois que vous ouvrirez une console du processeur de commande (cmd.exe), vous devriez voir la valeur de la variable lors de l'exécution de la commande echo %LC_ALL%
. Dans PowerShell, vous devriez le voir lors de l’émission de $env:LC_ALL
.
Le moyen le plus simple de rendre permanente la page de code UTF-8 consiste à ouvrir regeedit
et à ajouter une nouvelle valeur nommée Autorun
de type chaîne à la section HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor
et à lui affecter la valeur chcp 65001
.
Désormais, cette commande sera exécutée à chaque fois que vous ouvrez une nouvelle console cmd.exe. Vous voyez même sa sortie dans la nouvelle fenêtre: "Aktive Codepage: 65001." (ou similaire dans votre langue respective).
Oh, au fait: pour afficher correctement un fichier encodé UTF-8 dans PowerShell, vous pouvez utiliser Get-Content -encoding UTF8 file.txt
ou cat -encoding UTF8 file.txt
(cat
étant un alias pour Get-Content
dans PowerShell).
Si quelqu'un est intéressé par l'équivalent PowerShell de set LC_ALL=C.UTF-8
, c'est-à-dire:
$env:LC_ALL='C.UTF-8'
Cependant, cela ne fonctionne que pour la session en cours. Pour la rendre permanente, créez une variable d’environnement nommée LC_ALL
avec la valeur C.UTF-8
.
J'utilise git bash
sur WIN10
. Quant à moi, 4 réglages rendent l'apparence à la hauteur de mes attentes.
env
setting. Ajoutez LC_ALL=C.UTF-8
, LESSCHARSET=UTF-8
à PATH
globalement.
git
config. git config --global i18n.logOutputEncoding utf-8
.
réglage git bash
. Définissez Options-> Text-> Character set
sur utf-8
. Ou définissez locale
et Character set
tous les deux sur default
. Il est assez intelligent de choisir la encoding
correcte.
Terminé.
Je devais utiliser l'invite de commande windows powershell au lieu de l'invite par défaut (Windowkey + X)