meld pokazuje wynik w nieczytelnym alfabecie (japoński / chiński?)

15

Używam meld do wizualizacji różnic między dwoma plikami. meld pokazuje wyjście różnicowe w ... czymś takim jak japoński czy chiński?

Masz pojęcie, co może się stać? Problem z lokalizacją? Dziwne jest to, że podczas używania difflub colordiffw terminalu działają idealnie!

Dzięki!

Meld pokazuje nieczytelne wyjście

Matifou
źródło
Właśnie to dostałem, z git meld. Co dziwne, dotyczy to tylko jednego z plików LOCAL / BASE / REMOTE.
Ziv,
Nie jestem zaznajomiony z meld, ale sugeruję spróbować uruchomić go LC_ALL=C meldz wiersza poleceń i sprawdzić, czy problem nadal występuje.
Sergiy Kolodyazhnyy
Moja sprawa była w rzeczywistości kodowaniem Windows-1252 i rozwiązana jak tutaj -> stackoverflow.com/questions/38919384/...
eri0o

Odpowiedzi:

19

Ten sam problem tutaj: kodowanie pliku nie jest poprawnie wykrywane.

W moim przypadku jest to spowodowane ustawieniami „detekcji kodowania” melda.

Sprawdź z:

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

Wykryto tylko utf8.

Aby obejść ten problem, dodaj 'latin1'lub dowolne kodowanie pliku:

$ gsettings set org.gnome.meld detect-encodings "['utf8','latin1']"
Inaki Saez
źródło
2

Krótkie rozszerzenie do ostatniej odpowiedzi:

Musiałem dodać cytaty do części []:

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

wykonanie go w terminalu w Ubuntu 16.04

DrUweDamm
źródło
3
Lepiej zasugerować edycję wpisu zamiast odpowiedzi na małą korektę :)
Zanna
1
nie może komentować, za mało punktów, prawda? :(
Aquarius Power
1

Jestem prawie pewien, że jest to problem z kodowaniem. Twój terminal jest prawdopodobnie w UTF-8, a plik ma format ISO. Jest to nowy problem już w 16.04, myślę, że może się to zdarzyć również w 15.04, ale mogę potwierdzić, że tak nie jest w 12.04.

Spróbuj sprawdzić terminal, na którym uruchamiasz meld, wpisując „locale”. i powinieneś dostać coś takiego:

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

Następnie wpisz „file” dla każdego z plików i upewnij się, że pasują one do terminala.

Na marginesie miałem wiele problemów z kodowaniem między UTF-8 a ISO, które naprawdę nigdy nie powinny się zdarzyć w 16.04.

Dla mnie zadziałało uruchamianie iconv na każdym pliku:

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
źródło
1
Dzięki za pomoc! filePolecenie nie jest bardzo pouczające. (tylko mówi ASCII). Próbowałem użyć fromdosdo konwersji, ale nadal otrzymuję to samo wyjście ... Czy powinienem spróbować innego polecenia? Dzięki!
Matifou,
Użyłem iconv na każdym pliku do konwersji z ISO na utf-8 i wszystko działało magicznie. Dziwne, ponieważ nie ma znaków, które powinny odróżniać oba.
badner
Dodam polecenie do mojej odpowiedzi
badner,