meld muestra la salida en alfabeto ilegible (japonés / chino?)


15

Estoy usando meld para visualizar una diferencia entre dos archivos. meld muestra la salida diff en ... ¿algo como japonés o chino?

¿Alguna idea de lo que podría pasar? ¿Un problema local? Lo extraño es que cuando se usa diffo colordiffen la terminal, ¡funcionan perfectamente!

¡Gracias!

Meld muestra una salida ilegible


Acabo de recibir esto también, con una mezcla de git. Curiosamente, solo uno de los archivos LOCAL / BASE / REMOTE se ve afectado.
Ziv

No estoy familiarizado con meld, pero sugeriría intentar ejecutarlo LC_ALL=C melddesde la línea de comandos y ver si el problema persiste.
Sergiy Kolodyazhnyy

Mi caso fue en realidad la codificación de Windows-1252 y se resolvió como aquí -> stackoverflow.com/questions/38919384/…
eri0o

Respuestas:


19

El mismo problema aquí: la codificación de archivos no se detecta correctamente.

En mi caso, esto se debe a la configuración de "detectar-codificaciones" de meld.

Comprobar con:

$ gsettings get org.gnome.meld detect-encodings
['utf8']

Solo se detecta utf8.

Para solucionar este problema, agregue 'latin1'o la codificación que tenga su archivo:

$ gsettings set org.gnome.meld detect-encodings "['utf8','latin1']"

2

Extensión corta a la última respuesta:

Tuve que agregar comillas a la parte []:

gsettings set org.gnome.meld detect-encodings "['utf8','latin1']"

ejecutándolo en una terminal en Ubuntu 16.04


3
Es mejor sugerir una edición de la publicación en lugar de responder a una pequeña corrección :)
Zanna

1
no puede comentar, muy pocos puntos, ¿verdad? :(
Aquarius Power

1

Estoy bastante seguro de que este es un problema de codificación. Su terminal probablemente esté en UTF-8 y el archivo sea ISO. Este es un problema nuevo ya en 16.04, creo que también puede ocurrir en 15.04, pero puedo confirmar que no ocurre en 12.04.

Intente verificar su terminal donde está ejecutando meld escribiendo "locale". y deberías obtener algo como esto:

$ locale
LANG=en_US.UTF-8
LANGUAGE=en_US
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

Luego escriba "archivo" para cada uno de sus archivos y asegúrese de que coincidan con su terminal.

En una nota al margen, he tenido una serie de problemas de codificación entre UTF-8 e ISO que realmente nunca deberían suceder en 16.04.

Lo que funcionó para mí fue ejecutar iconv en cada archivo:

iconv -f ISO-8859-15 -t UTF-8 file_1.txt >file_1.tmp;
iconv -f ISO-8859-15 -t UTF-8 file_2.txt >file2.tmp;
mv file_1.tmp file_1.txt;
mv file_2.tmp file_2.txt;
meld file_1 file_2

1
¡Gracias por tu ayuda! El filecomando no es muy informativo. (solo dice ASCII). Intenté fromdosconvertir pero todavía obtengo el mismo resultado ... ¿Debo probar otro comando? ¡Gracias!
Matifou

Utilicé iconv en cada archivo para convertir de ISO a utf-8 y todo funcionó mágicamente. Extraño porque no hay caracteres que deberían hacer una diferencia entre los dos.
Badner

Agregaré el comando a mi respuesta
badner
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.