meld hiển thị đầu ra trong bảng chữ cái không thể đọc được (tiếng Nhật / tiếng Trung?)


15

Tôi đang sử dụng meld để trực quan hóa một sự khác biệt giữa hai tập tin. meld cho thấy đầu ra khác trong ... một cái gì đó như Nhật Bản hoặc Trung Quốc?

Bất cứ ý tưởng những gì có thể xảy ra? Một vấn đề bản địa? Điều kỳ lạ là khi sử dụng diffhoặc colordifftrong thiết bị đầu cuối, chúng hoạt động hoàn hảo!

Cảm ơn!

Meld hiển thị đầu ra không thể đọc được


Tôi cũng vừa mới nhận được điều này, với một git meld. Điều kỳ lạ là chỉ có một trong các tệp ĐỊA PHƯƠNG / BASE / REMOTE bị ảnh hưởng.
Ziv

Không quen thuộc với meld nhưng tôi khuyên bạn nên thử chạy nó LC_ALL=C meldtừ dòng lệnh và xem vấn đề còn tồn tại không.
Sergiy Kolodyazhnyy

Trường hợp của tôi thực sự là mã hóa Windows-1252 và được giải quyết như ở đây -> stackoverflow.com/questions/38919384/
triệt

Câu trả lời:


18

Vấn đề tương tự ở đây: Mã hóa tập tin không được phát hiện chính xác.

Trong trường hợp của tôi, điều này là do cài đặt "mã hóa phát hiện" của meld.

Kiểm tra với:

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

Chỉ utf8 được phát hiện.

Để khắc phục sự cố này, thêm 'latin1'hoặc bất kỳ mã hóa nào tệp của bạn có:

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

2

Phần mở rộng ngắn cho câu trả lời cuối cùng:

Tôi đã phải thêm dấu ngoặc kép vào phần []:

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

thực thi nó trong một thiết bị đầu cuối trong Ubuntu 16.04


3
Tốt hơn là đề xuất một chỉnh sửa cho bài đăng thay vì đưa ra câu trả lời cho một chỉnh sửa nhỏ :)
Zanna

1
Anh không thể bình luận, quá ít điểm phải không? :(
Sức mạnh Bảo Bình

1

Tôi khá chắc chắn đây là một vấn đề mã hóa. Thiết bị đầu cuối của bạn có thể ở dạng UTF-8 và tệp là ISO. Đây là một vấn đề mới vào đầu ngày 16.04, tôi nghĩ nó cũng có thể xảy ra vào ngày 15.04 nhưng tôi có thể xác nhận rằng nó không xảy ra vào ngày 12.04.

Hãy thử kiểm tra thiết bị đầu cuối của bạn nơi bạn đang chạy meld bằng cách gõ "locale". và bạn sẽ nhận được một cái gì đó như thế này:

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

Sau đó nhập "tệp" cho mỗi tệp của bạn và đảm bảo chúng khớp với thiết bị đầu cuối của bạn.

Bên cạnh đó, tôi đã gặp phải một số vấn đề về mã hóa giữa UTF-8 và ISO thực sự không bao giờ xảy ra trong 16.04.

Điều làm việc cho tôi là chạy iconv trên mỗi tệp:

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
Cảm ơn bạn đã giúp đỡ! Các filelệnh không phải là rất nhiều thông tin. (chỉ nói ASCII). Tôi đã cố gắng sử dụng fromdosđể chuyển đổi nhưng vẫn nhận được cùng một đầu ra ... Tôi có nên thử một lệnh khác không? Cảm ơn!
Matifou

Tôi đã sử dụng iconv trên mỗi tệp để chuyển đổi từ ISO sang utf-8 và mọi thứ đều hoạt động một cách kỳ diệu. Lạ bởi vì không có ký tự nên tạo ra sự khác biệt giữa hai.
kẻ xấu

Tôi sẽ thêm lệnh vào câu trả lời của mình
badner
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.