meld 以无法读取的字母显示输出(日语/中文?)

meld 以无法读取的字母显示输出(日语/中文?)

我正在使用 meld 来直观地显示两个文件之间的差异。meld 显示的差异输出是……类似日语或中文的格式吗?

知道会发生什么吗?语言环境问题?奇怪的是,当在终端中使用diff或时,它们工作正常!colordiff

谢谢!

Meld 显示不可读的输出

答案1

这里存在同样的问题:文件编码未正确检测。

就我而言,这是由于 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 的终端中执行它

答案3

我非常确定这是一个编码问题。您的终端可能是 UTF-8 格式,文件是 ISO。这是早在 16.04 中就出现的新问题,我认为 15.04 中也可能出现这种情况,但我可以确认 12.04 中不会出现这种情况。

尝试通过输入“locale”来检查运行 meld 的终端。你应该得到如下结果:

$ 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

相关内容