Problema
¿Cómo hacer que la git logsalida 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 logla salida de alguna manera se escapa. De acuerdo con la UTF-8tabla de codificación, los códigos entre paréntesis angulares ( <y >) de la salida corresponden a los git configparámetros escritos previamente .
Intenté configurar LESSCHARSETla variable de entorno utf-8como se sugiere en una de las respuestas para un problema similar, pero luego el resultado es confuso:
Sé que .git/configestá codificado correctamente, utf-8ya que se maneja gitkcomo se esperaba.
Aquí está la localesalida 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_ALLpara 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
chcpnecesario):Actualizar:
type(mostrar el archivo en la consola) funcionen correctamente, es necesariochcp 65001.catte 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_ALLy 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
regeedity agregar un nuevo valor llamadoAutorunde tipo cadena a la secciónHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processory 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.txtocat -encoding UTF8 file.txt(catsiendo un alias paraGet-Contenten PowerShell).fuente
LC_ALLno necesita el conjunto. Otras herramientas, enviadas con git installaion, comoless, que es el paginador predeterminado / see core.pager, están usando elLC_ALLvalor. Otros valores válidos son el idioma localizado, por ejemplo:LC_ALL=de_DE.UTF-8para los alemanes.setx LC_ALL C.UTF-8$env.LC_ALL='ClUTF-8'a$ProfileSi 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_ALLcon el valorC.UTF-8$env:LC_ALL='C.UTF-8'en su$Profilearchivofuente
Yo uso
git bashenWIN10. En cuanto a mí, 4 configuraciones aparecen como mi expectativa.envajuste. AgregarLC_ALL=C.UTF-8,LESSCHARSET=UTF-8aPATHglobalmente.gitconfig.git config --global i18n.logOutputEncoding utf-8.git bashajuste. EstablecerOptions-> Text-> Character setenutf-8. O establecerlocaleyCharacter setambos endefault. Es lo suficientemente inteligente como para elegir el correctoencoding.Hecho.
fuente
giten 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
localefue cantando todas las letras "C", sin UTF-8. Para solucionar esto, descomentéen_US.UTF-8yru_RU.UTF-8en /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