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

Matifou
la source
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']"
Inaki Saez
la source
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

DrUweDamm
la source
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
badner
la source
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