meld affiche la sortie dans un alphabet illisible (japonais / chinois?)


15

J'utilise meld pour visualiser un diff entre deux fichiers. meld montre la sortie diff en ... quelque chose comme le japonais ou le chinois?

Une idée de ce qui pourrait arriver? Un problème de localisation? Ce qui est étrange, c'est que lors de l'utilisation diffou colordiffen terminal, ils fonctionnent parfaitement!

Merci!

Meld montre une sortie illisible


Je viens de recevoir cela aussi, avec une fusion de git. Curieusement, un seul des fichiers LOCAL / BASE / REMOTE est affecté.
Ziv

Je ne connais pas bien meld mais je suggère d'essayer de l'exécuter à LC_ALL=C meldpartir de la ligne de commande et de voir si le problème persiste.
Sergiy Kolodyazhnyy

Mon cas était en fait le codage Windows-1252 et résolu comme ici -> stackoverflow.com/questions/38919384/…
eri0o

Réponses:


19

Même problème ici: le codage des fichiers n'est pas correctement détecté.

Dans mon cas, cela est dû aux paramètres de «détection-encodage» de meld.

Vérifier avec:

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

Seul utf8 est détecté.

Pour contourner ce problème, ajoutez 'latin1'ou tout autre encodage de votre fichier:

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

2

Extension courte à la dernière réponse:

J'ai dû ajouter des citations à la partie []:

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

l'exécuter dans un terminal dans Ubuntu 16.04


3
Mieux vaut suggérer une modification au message au lieu de faire une réponse pour une petite correction :)
Zanna

1
il ne peut pas commenter, trop peu de points non? :(
Aquarius Power

1

Je suis sûr que c'est un problème d'encodage. Votre terminal est probablement en UTF-8 et le fichier est ISO. C'est un nouveau problème dès le 16.04, je pense que cela peut arriver aussi au 15.04 mais je peux confirmer que ce n'est pas le cas au 12.04.

Essayez de vérifier votre terminal où vous exécutez la fusion en tapant "locale". et vous devriez obtenir quelque chose comme ceci:

$ 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=

Tapez ensuite "fichier" pour chacun de vos fichiers et assurez-vous qu'ils correspondent à votre terminal.

En passant, j'ai eu un certain nombre de problèmes d'encodage entre UTF-8 et ISO qui ne devraient vraiment jamais se produire en 16.04.

Ce qui a fonctionné pour moi, c'est d'exécuter iconv sur chaque fichier:

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
Merci de votre aide! La filecommande n'est pas très informative. (dit simplement ASCII). J'ai essayé de fromdosconvertir mais j'obtiens toujours la même sortie ... DEVRAIS-JE essayer une autre commande? Merci!
Matifou

J'ai utilisé iconv sur chaque fichier pour convertir l'ISO en utf-8 et tout a fonctionné comme par magie. Bizarre car il n'y a pas de caractères qui devraient faire la différence entre les deux.
badner

J'ajouterai la commande à ma réponse
badner
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.