融合以不可读的字母显示输出(日语/中文?)


15

我正在使用Meld可视化两个文件之间的差异。meld以...之类的语言显示差异输出,例如日语还是中文?

知道会发生什么吗?地区问题?奇怪的是使用时diffcolordiff在终端,它们完美地工作!

谢谢!

融合显示不可读的输出


我也已经用git融合了。奇怪的是,只有一个 LOCAL / BASE / REMOTE文件受到影响。
2014年

我对Meld不熟悉,但是我建议尝试从命令行运行它LC_ALL=C meld,看看问题是否仍然存在。
Sergiy Kolodyazhnyy

我的情况实际上是Windows-1252编码,并按如下所示解决-> stackoverflow.com/questions/38919384/…–
eri0o

Answers:


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的终端中执行它


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

1
谢谢你的帮助!该file命令不是非常有用。(只说ASCII)。我曾经尝试进行fromdos转换,但仍然获得相同的输出...我应该尝试另一个命令吗?谢谢!
Matifou

我在每个文件上使用了iconv,将其从ISO转换为utf-8,一切都神奇地起作用了。奇怪的是,因为没有字符可以使两者有所区别。
badner

我将命令添加到我的答案中
-badner
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.