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


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']"

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


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

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,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.