meld mostra a saída em alfabeto ilegível (japonês / chinês?)

15

Estou usando o meld para visualizar um diff entre dois arquivos. meld mostra a saída diff em ... algo como japonês ou chinês?

Alguma idéia do que poderia acontecer? Um problema de localidade? O que é estranho é que, ao usar diffou colordiffno terminal, eles funcionam perfeitamente!

Obrigado!

Meld mostra saída ilegível

Matifou
fonte
Acabei de conseguir isso também, com uma mistura de git. Estranhamente, apenas um dos arquivos LOCAL / BASE / REMOTE é afetado.
Ziv
Não estou familiarizado com o meld, mas eu sugiro tentar executá-lo a partir LC_ALL=C meldda linha de comando e ver se o problema persiste.
precisa saber é o seguinte
O meu caso foi realmente a codificação Windows-1252 e resolvido como aqui -> stackoverflow.com/questions/38919384/...
eri0o

Respostas:

18

Mesmo problema aqui: a codificação do arquivo não foi detectada corretamente.

No meu caso, isso se deve às configurações de "detecção de codificação" do meld.

Verificar com:

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

Somente utf8 é detectado.

Para solucionar esse problema, adicione 'latin1'ou qualquer codificação que seu arquivo tenha:

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

Extensão curta para a última resposta:

Eu tive que adicionar aspas à parte []:

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

executando-o em um terminal no Ubuntu 16.04

DrUweDamm
fonte
3
Melhor para sugerir uma edição para o cargo em vez de fazer uma resposta para uma pequena correção :)
Zanna
11
ele não pode comentar, muito pouco, certo? :(
Aquarius Power
1

Tenho certeza de que esse é um problema de codificação. Seu terminal provavelmente está em UTF-8 e o arquivo é ISO. Este é um novo problema já em 16.04, acho que também pode acontecer no 15.04, mas posso confirmar que não no 12.04.

Tente verificar o seu terminal onde você está executando o meld digitando "locale". e você deve obter algo parecido com isto:

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

Em seguida, digite "arquivo" para cada um dos seus arquivos e verifique se eles correspondem ao seu terminal.

Em uma nota lateral, eu tenho tido vários problemas de codificação entre UTF-8 e ISO que realmente nunca deveriam acontecer no 16.04.

O que funcionou para mim foi executar o iconv em cada arquivo:

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
malvado
fonte
11
Obrigado pela ajuda! O filecomando não é muito informativo. (apenas diz ASCII). Eu tentei usar fromdospara converter, mas ainda recebo a mesma saída ... DEVO tentar outro comando? Obrigado!
Matifou
Eu usei iconv em cada arquivo para converter de ISO para utf-8 e tudo funcionou magicamente. Estranho, porque não há caracteres que devem fazer a diferença entre os dois.
Badner
Adicionarei o comando à minha resposta
badner 25/01