la fusione mostra l'output in alfabeto illeggibile (giapponese / cinese?)


15

Sto usando la combinazione per visualizzare un diff tra due file. la fusione mostra l'output diff in ... qualcosa come giapponese o cinese?

Qualche idea di cosa potrebbe succedere? Un problema di localizzazione? La cosa strana è che quando si usano diffo colordiffnel terminale, funzionano perfettamente!

Grazie!

La combinazione mostra output illeggibili


Ho appena ottenuto anche questo, con una combinazione git. Stranamente, solo uno dei file LOCAL / BASE / REMOTE è interessato.
Ziv

Non ho familiarità con la fusione, ma suggerirei di provare a eseguirlo come LC_ALL=C meldda riga di comando e vedere se il problema persiste.
Sergiy Kolodyazhnyy,

Il mio caso era in realtà la codifica di Windows-1252 e risolto come qui -> stackoverflow.com/questions/38919384/...
eri0o

Risposte:


19

Stesso problema qui: la codifica dei file non viene rilevata correttamente.

Nel mio caso ciò è dovuto alle impostazioni di "rilevazione-codifica" di Meld.

Controllare con:

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

Viene rilevato solo utf8.

Per ovviare a questo problema aggiungere 'latin1'o qualunque codifica abbia il tuo file:

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

2

Breve estensione all'ultima risposta:

Ho dovuto aggiungere delle virgolette alla parte []:

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

eseguendolo in un terminale in Ubuntu 16.04


3
Meglio suggerire una modifica al post invece di dare una risposta per una piccola correzione :)
Zanna,

1
non può commentare, troppo piccoli punti giusto? :(
Aquarius Power il

1

Sono abbastanza sicuro che si tratti di un problema di codifica. Il tuo terminale è probabilmente in UTF-8 e il file è ISO. Questo è un nuovo problema già dal 16.04, penso che possa accadere anche nel 15.04, ma posso confermare che non lo è nel 12.04.

Prova a controllare il tuo terminale dove stai eseguendo la fusione digitando "locale". e dovresti ottenere qualcosa del genere:

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

Quindi digita "file" per ciascuno dei tuoi file e assicurati che corrispondano al tuo terminale.

Da un lato ho riscontrato una serie di problemi di codifica tra UTF-8 e ISO che in realtà non dovrebbero mai accadere nel 16.04.

Ciò che ha funzionato per me era l'esecuzione di iconv su ogni file:

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
Grazie per l'aiuto! Il filecomando non è molto informativo. (dice solo ASCII). Ho provato a fromdosconvertire, ma ho sempre lo stesso output ... Dovrei provare un altro comando? Grazie!
Matifou,

Ho usato iconv su ogni file per convertire da ISO a utf-8 e tutto ha funzionato magicamente. Strano perché non ci sono caratteri che dovrebbero fare la differenza tra i due.
badner

Aggiungerò il comando alla mia risposta
badner
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.