Problema
¿Cómo hacer que la git log
salida del comando se muestre correctamente en el símbolo del sistema de Windows?
Ejemplo
Como puede ver, puedo escribir caracteres diacríticos correctamente, pero en git log
la salida de alguna manera se escapa. De acuerdo con la UTF-8
tabla de codificación, los códigos entre paréntesis angulares ( <
y >
) de la salida corresponden a los git config
parámetros escritos previamente .
Intenté configurar LESSCHARSET
la variable de entorno utf-8
como se sugiere en una de las respuestas para un problema similar, pero luego el resultado es confuso:
Sé que .git/config
está codificado correctamente, utf-8
ya que se maneja gitk
como se esperaba.
Aquí está la locale
salida del comando si es necesario
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=
EDITAR:
La salida es la misma también en git-bash puro :
entonces creo que el problema es independiente del shell y se relaciona con Git o su propia configuración.
fuente
Respuestas:
Bien, experimenté un poco y descubrí que los comandos de Windows Git realmente necesitan variables UNIX como
LC_ALL
para mostrar el polaco (u otros caracteres UTF-8) correctamente. Solo prueba este comando:Entonces disfruta del resultado. Esto es lo que sucedió en mi consola (fuente "Consolas", no es
chcp
necesario):Actualizar:
type
(mostrar el archivo en la consola) funcionen correctamente, es necesariochcp 65001
.cat
te beneficias de lo mencionado anteriormenteset LC_ALL=C.UTF-8
.Actualización 2: Cómo hacer que los cambios sean permanentes
Como dijo el usuario mono blaine , cree una variable de entorno
LC_ALL
y asígnele el valorC.UTF-8
, ya sea globalmente o solo para su propio perfil de usuario (lo siento por la captura de pantalla en alemán):La próxima vez que abra una consola de procesador de comandos (cmd.exe), debería ver el valor de la variable al ejecutar el comando
echo %LC_ALL%
. En PowerShell, debería verlo al emitir$env:LC_ALL
.La forma más sencilla de hacer que la página de códigos UTF-8 sea permanente es abrir
regeedit
y agregar un nuevo valor llamadoAutorun
de tipo cadena a la secciónHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor
y asignarle el valorchcp 65001
.De ahora en adelante, este comando se ejecutará cada vez que abra una nueva consola cmd.exe. Incluso verá su resultado en la nueva ventana: "Página de códigos Aktive: 65001". (o similar en su idioma respectivo).
Ah, por cierto: para mostrar un archivo codificado en UTF-8 correctamente en PowerShell, puede usar
Get-Content -encoding UTF8 file.txt
ocat -encoding UTF8 file.txt
(cat
siendo un alias paraGet-Content
en PowerShell).fuente
LC_ALL
no necesita el conjunto. Otras herramientas, enviadas con git installaion, comoless
, que es el paginador predeterminado / see core.pager, están usando elLC_ALL
valor. Otros valores válidos son el idioma localizado, por ejemplo:LC_ALL=de_DE.UTF-8
para los alemanes.setx LC_ALL C.UTF-8
$env.LC_ALL='ClUTF-8'
a$Profile
Si alguien está interesado en el equivalente de PowerShell
set LC_ALL=C.UTF-8
, es decir:Sin embargo, esto solo funciona para la sesión actual. Para hacerlo permanente, dos posibilidades:
LC_ALL
con el valorC.UTF-8
$env:LC_ALL='C.UTF-8'
en su$Profile
archivofuente
Yo uso
git bash
enWIN10
. En cuanto a mí, 4 configuraciones aparecen como mi expectativa.env
ajuste. AgregarLC_ALL=C.UTF-8
,LESSCHARSET=UTF-8
aPATH
globalmente.git
config.git config --global i18n.logOutputEncoding utf-8
.git bash
ajuste. EstablecerOptions-> Text-> Character set
enutf-8
. O establecerlocale
yCharacter set
ambos endefault
. Es lo suficientemente inteligente como para elegir el correctoencoding
.Hecho.
fuente
git
en el símbolo del sistema de Windows y los dos primeros pasos resolvieron el problema de mi caso.Estoy usando Git a través de Powershell Core v7.0.3 con posh-git instalado dentro de Windows Terminal en Windows 10.
He estado buscando respuestas y probé muchas de ellas. Las soluciones que funcionaron para mí fueron:
$env:LC_ALL = 'C.UTF-8'
al perfil actual de Powershellgit config --global core.pager 'less --raw-control-chars'
Ambas soluciones funcionan por separado. Elegí usar el comando Git ya que el problema parece estar relacionado con Git, y el perfil de Powershell se mantiene más limpio.
fuente
$env:LESSCHARSET='utf-8'
funciona bien para PowerShell 5 en la Terminal de Windows.Tuve que usar el símbolo del sistema de Windows powershell en lugar del predeterminado (tecla de ventana + X)
fuente
Tuve ese problema en Linux. Y el problema fue que no generé locales. Así que mi salida
locale
fue cantando todas las letras "C", sin UTF-8. Para solucionar esto, descomentéen_US.UTF-8
yru_RU.UTF-8
en /etc/locale.gen. Luego ejecuto localectl set-locale LANG = ru_RU.UTF-8 y reinicié. Y volvió a iniciar sesión en el sistema. Después de eso ciryllic se mostró normalmente.fuente