Problème
Comment rendre la git log
sortie de commande correctement affichée sur l'invite de commande Windows?
Exemple
Comme vous pouvez le voir, je peux taper correctement les caractères diacritiques, mais git log
la sortie est en quelque sorte échappée. Selon le UTF-8
tableau de codage, les codes entre crochets ( <
et >
) de la sortie correspondent aux git config
paramètres précédemment saisis .
J'ai essayé de définir LESSCHARSET
la variable d'environnement sur utf-8
comme suggéré dans l' une des réponses pour un problème similaire, mais la sortie est brouillée:
Je sais qu'il .git/config
est correctement encodé utf-8
car il est géré gitk
comme prévu.
Voici la locale
sortie de commande 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=
ÉDITER:
La sortie est la même également en pure git-bash :
donc je pense que le problème est indépendant du shell et concerne Git ou sa configuration elle-même.
la source
Réponses:
D'accord, j'ai expérimenté un peu et j'ai découvert que les commandes Windows Git ont réellement besoin de variables UNIX comme
LC_ALL
pour afficher correctement le polonais (ou d'autres caractères UTF-8). Essayez simplement cette commande:Alors profitez du résultat. Voici ce qui s'est passé sur ma console (police "Consolas", pas
chcp
nécessaire):Mise à jour:
type
(afficher le fichier sur la console) fonctionnent correctement, vous en avez besoinchcp 65001
.cat
vous bénéficiez de ce qui précèdeset LC_ALL=C.UTF-8
.Mise à jour 2: Comment rendre les modifications permanentes
Comme l'a dit l'utilisateur mono blaine , créez une variable d'environnement
LC_ALL
et attribuez-lui la valeurC.UTF-8
, soit globalement, soit pour votre propre profil utilisateur uniquement (désolé pour la capture d'écran allemande):La prochaine fois que vous ouvrez une console de processeur de commandes (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$env:LC_ALL
.Le moyen le plus simple de rendre la page de codes UTF-8 permanente consiste à ouvrir
regeedit
et à ajouter une nouvelle valeur nomméeAutorun
de type chaîne à la sectionHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor
et à lui attribuer la valeurchcp 65001
.Désormais, cette commande sera exécutée chaque fois que vous ouvrirez 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
oucat -encoding UTF8 file.txt
(cat
étant un alias pourGet-Content
PowerShell).la source
LC_ALL
n'est pas nécessaire par git lui-même. D'autres outils - fournis avec le git installaion - commeless
, qui est le pager par défaut / see core.pager utilisent laLC_ALL
valeur. D'autres valeurs valides sont la langue localisée, par exemple:LC_ALL=de_DE.UTF-8
pour les allemands.setx LC_ALL C.UTF-8
$env.LC_ALL='ClUTF-8'
à$Profile
Si quelqu'un est intéressé par l'équivalent PowerShell de
set LC_ALL=C.UTF-8
, c'est:Cependant, cela ne fonctionne que pour la session en cours. Pour le rendre permanent, deux possibilités:
LC_ALL
avec la valeurC.UTF-8
$env:LC_ALL='C.UTF-8'
dans votre$Profile
dossierla source
J'utilise
git bash
surWIN10
. Quant à moi, 4 réglages font l'apparence comme mes attentes.env
réglage. AjouterLC_ALL=C.UTF-8
,LESSCHARSET=UTF-8
àPATH
globalement.git
config.git config --global i18n.logOutputEncoding utf-8
.git bash
réglage. RéglezOptions-> Text-> Character set
surutf-8
. Ou mislocale
et lesCharacter set
deux àdefault
. Il est assez intelligent de choisir le bonencoding
.Terminé.
la source
git
invite de commande Windows et les deux premières étapes ont résolu le problème pour mon cas.J'utilise Git via Powershell Core v7.0.3 avec posh-git installé dans Windows Terminal sur Windows 10.
J'ai parcouru les réponses et essayé plusieurs d'entre elles. Les solutions qui ont fonctionné pour moi étaient:
$env:LC_ALL = 'C.UTF-8'
au profil Powershell actuelgit config --global core.pager 'less --raw-control-chars'
Ces solutions fonctionnent toutes les deux séparément. J'ai choisi d'utiliser la commande Git car le problème semble être lié à Git, et le profil Powershell reste plus propre.
la source
$env:LESSCHARSET='utf-8'
fonctionne bien aussi pour PowerShell 5 dans le terminal Windows.J'ai dû utiliser l'invite de commande Windows PowerShell au lieu de celle par défaut (Windowkey + X)
la source
J'ai eu un tel problème sous Linux. Et le problème était que je n'avais pas généré de paramètres régionaux. Donc, ma sortie de
locale
contenait toutes les lettres "C", sans UTF-8. Pour résoudre cela, j'ai décommentéen_US.UTF-8
etru_RU.UTF-8
dans /etc/locale.gen. Ensuite, je lance localectl set-locale LANG = ru_RU.UTF-8 et redémarré. Et reconnecté au système. Après cela, ciryllic était affiché normalement.la source