meld แสดงผลลัพธ์เป็นตัวอักษรที่อ่านไม่ได้ (ญี่ปุ่น / จีน?)


15

ฉันใช้ meld เพื่อให้เห็นความแตกต่างระหว่างสองไฟล์ meld แสดงเอาท์พุท diff ใน ... บางอย่างเช่นญี่ปุ่นหรือจีน?

ความคิดอะไรจะเกิดขึ้น? ปัญหาสถานที่? สิ่งที่แปลกคือเมื่อใช้งานdiffหรือcolordiffในเทอร์มินัลพวกเขาทำงานอย่างสมบูรณ์

ขอบคุณ!

Meld แสดงผลลัพธ์ที่อ่านไม่ได้


ฉันเพิ่งได้รับเช่นนี้ด้วย git meld ผิดปกติเพียงอย่างใดอย่างหนึ่งของท้องถิ่น / BASE / ไฟล์ระยะไกลได้รับผลกระทบ
Ziv

ไม่คุ้นเคยกับ meld แต่ฉันขอแนะนำให้พยายามเรียกใช้LC_ALL=C meldจากบรรทัดคำสั่งและดูว่ายังมีปัญหาอยู่หรือไม่
Sergiy Kolodyazhnyy

กรณีของฉันคือการเข้ารหัส Windows-1252 และแก้ไขอย่างที่นี่ -> stackoverflow.com/questions/38919384/ …
eri0o

คำตอบ:


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']"

ดำเนินการใน terminal ใน Ubuntu 16.04


3
ดีกว่าที่จะแนะนำให้แก้ไขการโพสต์แทนการคำตอบสำหรับการแก้ไขเล็ก ๆ :)
Zanna

1
เขาไม่สามารถแสดงความคิดเห็นคะแนนน้อยเกินไปใช่ไหม :(
กุมภ์ Power

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=

จากนั้นพิมพ์ "ไฟล์" สำหรับแต่ละไฟล์ของคุณและตรวจสอบให้แน่ใจว่าตรงกับเทอร์มินัลของคุณ

ในบันทึกด้านข้างฉันได้รับปัญหาการเข้ารหัสจำนวนมากระหว่าง 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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.