Marcin Kłopotek
Problema
como puedo hacer git log
¿La salida del comando se muestra correctamente en el terminal CLI de Windows?
Ejemplo
Como puede ver, puedo escribir caracteres diacríticos correctamente, pero en git log
, la salida se escapa de alguna manera. De acuerdo con la Tabla de codificación UTF-8los códigos entre paréntesis angulares (<
y >
) de la salida corresponden a los tecleados previamente git config
parámetros
he intentado configurar LESSCHARSET
variable de entorno a utf-8
como se sugiere en una de las respuestas para un problema similar, pero luego el resultado es confuso:
Sé .git/config
está codificado correctamente con UTF-8 como lo maneja gitk
como se esperaba.
Aquí está el locale
salida de 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=
La salida es la misma también en puro Git Bash:
así que creo que el problema es independiente de Shell y se relaciona con Git o su propia configuración.
kriegaex
De acuerdo, experimenté un poco y descubrí que los comandos de Windows Git en realidad necesitan variables de UNIX como LC_ALL
para mostrar correctamente el polaco (u otros caracteres UTF-8). Solo prueba este comando:
set LC_ALL=C.UTF-8
Entonces disfruta del resultado. Esto es lo que sucedió en mi consola (fuente “Consolas”, no chcp
necesario):
Actualizar:
- Bueno, para comandos de Windows como
type
(archivo de visualización en la consola) para que funcione correctamente, necesitachcp 65001
. - Y si prefiere comandos de Git Bash como
cat
te beneficias de lo mencionadoset LC_ALL=C.UTF-8
.
Actualización 2: Cómo hacer que los cambios sean permanentes
como usuario mono blaine dicho, crea una variable de entorno LC_ALL
y asignarle el valor C.UTF-8
ya sea globalmente o solo para su propio perfil de usuario (perdón 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 emitir 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 agregue un nuevo valor llamado Autorun
de tipo cadena a sección
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor
y asignarle el valor chcp 65001
.
De ahora en adelante, este comando se ejecutará cada vez que abra una nueva consola cmd.exe. Incluso verá su salida en la nueva ventana: “Página de códigos Aktive: 65001”. (o similar en su respectivo idioma).
Ah, por cierto: para mostrar correctamente un archivo codificado en UTF-8 en PowerShell, puede usar Get-Content -encoding UTF8 file.txt
o cat -encoding UTF8 file.txt
(cat
siendo un alias para Get-Content
en PowerShell).
-
Colocar
LC_ALL
git no lo necesita. Otras herramientas, enviadas con la instalación de git, comoless
que es el buscapersonas predeterminado / ver core.pager están usando elLC_ALL
valor. Otros valores válidos son el lang localizado, por ejemplo:LC_ALL=de_DE.UTF-8
para los alemanes.– volver42
4 de noviembre de 2017 a las 13:41
-
puede configurar la variable de entorno desde la línea de comandos usando
setx LC_ALL C.UTF-8
– anión
14 de abril de 2019 a las 17:49
-
Powershell 6 en ConEmu, fue suficiente para agregar
$env.LC_ALL='ClUTF-8'
a$Profile
– Andrés Spencer
19 de febrero de 2020 a las 9:51
-
Tuve un problema de codificación con la utilidad rscript (herramienta de línea de comando para ejecutar código r), este consejo también ayudó a solucionarlo. ¡Gracias!
– Rebanada De Atún
28 de septiembre de 2021 a las 2:21
mono blaine
Si alguien está interesado en el equivalente de PowerShell de set LC_ALL=C.UTF-8
eso es:
$env:LC_ALL='C.UTF-8'
Sin embargo, esto solo funciona para la sesión actual. Para hacerlo permanente, dos posibilidades:
- crear una variable de entorno llamada
LC_ALL
con el valorC.UTF-8
- o poner
$env:LC_ALL='C.UTF-8'
en tus$Profile
archivo
-
O agréguelo a su perfil de PowerShell (prefiero esto a la configuración global porque uso el mismo perfil, a través de git, en varias máquinas).
– Ricardo
21 de noviembre de 2017 a las 11:29
-
El archivo de perfil se puede editar, por ejemplo, ejecutando: notepad $profile Luego agregue una línea en algún lugar como sugirió mono blaine, $env:LC_ALL=’C.UTF-8′
–Tore Aurstad
25 de septiembre de 2018 a las 8:58
-
Con PowerShell 6 + ConEmu en Windows 10: esto funciona, no hacía falta nada más
– Andrés Spencer
19 de febrero de 2020 a las 9:55
Ayşe Nur
estoy usando Git a través de PowerShell Núcleo v7.0.3 adentro Terminal de Windows en Windows 10.
He estado buscando respuestas y probé muchas de ellas. Las soluciones que me funcionaron fueron:
- Cambiar una configuración de Git:
git config --global core.pager 'less --raw-control-chars'
- Agregar
$env:LC_ALL = 'C.UTF-8'
al perfil actual de PowerShell
Estas soluciones funcionan por separado. Elegí usar el comando Git porque el problema parece estar relacionado con Git y el perfil de PowerShell se mantiene limpio.
-
Gracias por la configuración de Git. La configuración de Git funciona para mí, pero también encontré esa configuración
$env:LESSCHARSET='utf-8'
funciona bien también para PowerShell 5 en la Terminal de Windows.– mloskot
28 de septiembre de 2020 a las 9:40
W.Perrin
yo suelo Git Bash en Windows 10. En cuanto a mí, cuatro configuraciones hacen que aparezca como mi expectativa.
-
env
configuración. AgregarLC_ALL=C.UTF-8
,LESSCHARSET=UTF-8
aPATH
globalmente. -
git
configuracióngit config --global i18n.logOutputEncoding utf-8
. -
Configuración de Git Bash. Colocar Opciones → Texto → Conjunto de caracteres a
utf-8
. o establecerlocale
yCharacter set
ambos adefault
. Es lo suficientemente inteligente como para elegir el correctoencoding
.
Hecho.
Juan k
Tuve que usar el símbolo del sistema de Windows PowerShell en lugar del predeterminado (tecla de Windows + X).
-
Funciona de maravilla para el coreano.
– Park JongBum
8 de noviembre de 2022 a las 4:00
Pedro Mortensen
Tuve tal problema en Linux. Y el problema era que no generaba locales. Así que mi salida de locale
contenía todas las letras “C”, sin UTF-8.
Para resolver esto, descomenté en_US.UTF-8
y ru_RU.UTF-8
en /etc/locale.gen. Luego ejecuto localectl set-locale LANG=ru_RU.UTF-8 y reinicio. Y volvió a iniciar sesión en el sistema. Después de eso, el cirílico se mostró normalmente.
-
Funciona de maravilla para el coreano.
– Park JongBum
8 de noviembre de 2022 a las 4:00
DEV Tiago Francia
git config --global core.pager 'less --raw-control-chars'
#Or
git config --global core.pager 'more'
¿Ha probado la solución en “Caracteres Unicode en la línea de comandos de Windows – cómo?”?
– jthill
31 de diciembre de 2016 a las 0:01
Sí, probé varias páginas de códigos, incluida 65001 (UTF-8), sin ningún resultado. Parece que el comando chcp no tiene influencia en cómo se muestra la salida del registro de git. Siempre se muestra de la misma manera.
– Marcin Kłopotek
31 de diciembre de 2016 a las 13:54
Lo siento si la pregunta suena estúpida, pero ¿por qué usas el símbolo del sistema de Windows en lugar de Git Bash? Es más adecuado para usar Git, la ventana se puede cambiar de tamaño hasta la pantalla completa, el indicador muestra automáticamente en qué rama se encuentra, etc.
– kriegaex
1 de enero de 2017 a las 14:09
No es estúpido @kriegaex, en realidad es bueno. Estoy usando git-bash envuelto en ConEmu para el uso diario. El resultado es el mismo i.imgur.com/hMKz9D3r.png. Describí mi problema dando ejemplos con cmd.exe para no confundir a las personas con otras herramientas dependientes que estoy usando, ya que creo que el problema es independiente del shell y se relaciona con Git o su configuración en sí.
– Marcin Kłopotek
1 de enero de 2017 a las 14:24
@jthill gracias, esta respuesta parece hacerlo, stackoverflow.com/a/55674760/4592648
– Lunes Fatiga
5 de enero de 2022 a las 10:48