meld показывает вывод в нечитаемом алфавите (японский / китайский?)

15

Я использую meld для визуализации различий между двумя файлами. meld показывает вывод diff в ... что-то вроде японского или китайского?

Есть идеи, что может случиться? Проблема локали? Что странно, что при использовании diffили colordiffв терминале они работают отлично!

Благодарность!

Meld показывает нечитаемый вывод

Matifou
источник
Я только что получил это, с мерзавцем. Как ни странно, затрагивается только один из файлов LOCAL / BASE / REMOTE.
Зив
Не знаком с meld, но я бы посоветовал попробовать запустить его LC_ALL=C meldиз командной строки и посмотреть, не исчезнет ли проблема.
Сергей Колодяжный
В моем случае это была кодировка Windows-1252, и она была решена, как здесь -> stackoverflow.com/questions/38919384/…
eri0o

Ответы:

19

Та же проблема: кодировка файла не определена правильно.

В моем случае это связано с настройками meld для «обнаружения кодировок».

Проверить с:

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

Только utf8 обнаружен.

Чтобы обойти эту проблему, добавьте 'latin1'или любую другую кодировку вашего файла:

$ gsettings set org.gnome.meld detect-encodings "['utf8','latin1']"
Инаки Саез
источник
2

Краткое продолжение к последнему ответу:

Я должен был добавить цитаты в [] часть:

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

выполнение его в терминале в Ubuntu 16.04

DrUweDamm
источник
3
Лучше предложить изменить сообщение, а не делать ответ на небольшую поправку :)
Zanna
1
он не может комментировать, слишком мало очков, верно? :(
Водолей Сила
1

Я уверен, что это проблема кодирования. Ваш терминал, вероятно, в UTF-8 и файл ISO. Это новая проблема уже в 16.04, я думаю, что это может произойти и в 15.04, но я могу подтвердить, что это не так в 12.04.

Попробуйте проверить свой терминал, в котором вы используете соединение, набрав «locale». и вы должны получить что-то вроде этого:

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

Затем введите «file» для каждого из ваших файлов и убедитесь, что они соответствуют вашему терминалу.

Кстати, у меня возник ряд проблем с кодировкой между UTF-8 и ISO, которые действительно никогда не должны происходить в 16.04.

То, что работало для меня, запускало iconv для каждого файла:

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
источник
1
Спасибо за вашу помощь! Команда fileне очень информативна. (просто говорит ASCII). Я пытался использовать fromdosдля преобразования, но все еще получить тот же вывод ... Можно попробовать другую команду? Благодарность!
Матифу
Я использовал iconv в каждом файле для преобразования из ISO в utf-8, и все волшебным образом работало. Странно, потому что нет символов, которые должны иметь значение между ними.
Badner
Я добавлю команду к моему ответу
badner