วิธีสลับการเข้ารหัสข้อความกลับเป็น UTF-8 ด้วย emacs


23

ทันใดนั้นแฟ้มข้อความบางส่วนของฉันฉันกำลังแก้ไขด้วยEmacsมีการเปลี่ยนแปลงและแสดงอักขระพิเศษในลักษณะที่แปลกเช่น

\344แทนแทนที่จะä
\374เป็นü ... และอื่น ๆ

ในไฟล์อื่นตอนนี้ฉันมี

üสำหรับü
äสำหรับä ....

(ฉันไม่รู้ว่าเหตุการณ์ใดเป็นสาเหตุของเหตุการณ์นั้นบางทีฉันอาจทำอะไรผิดไป)

ฉันต้องการแปลงเอกสารกลับสู่สถานะดั้งเดิม (การเข้ารหัสมาตรฐานของฉันคือ UTF-8) เพื่อให้สามารถแสดงได้อย่างถูกต้องด้วยä, ö, ü, ... แต่ฉันไม่ทราบว่าจะทำอย่างไรกับ emacs .

คำตอบ:


27

M-x revert-buffer-with-coding-systemหากคุณยังไม่ได้เปลี่ยนไฟล์คุณสามารถลอง หนึ่งlatin-1หรือutf-8ควรทำงานขึ้นอยู่กับไฟล์

นอกจากนี้คุณยังสามารถทำเครื่องหมายไฟล์ทั้งหมดที่มีแล้วลองC-x h M-x recode-regionมันจะขอให้คุณและText was really in But was interpreted asสำหรับไฟล์แรกในคำถามของคุณดูเหมือนว่ามันควรจะเป็นlatin-1และutf-8และสำหรับตัวอย่างที่สองมันอาจจะเป็นวิธีที่รอบอื่น ๆและutf-8latin-1

หลังจากทำให้ถูกต้องแล้วคุณสามารถเลือกระบบการเข้ารหัสที่จะบันทึกไฟล์ด้วยการใช้M-x set-buffer-file-coding-system(หรือC-x C-m fสั้น ๆ )


น่าเสียดายที่ฉันต้องการคำสั่งนั้นบ่อยครั้งดังนั้นฉันจึงต้องการกำหนดแป้นพิมพ์ลัดเพื่อเรียกใช้พื้นที่การถอดรหัส (เดิม: latin-1, ตีความเป็น utf-8-dos) ด้วยการกดแป้นเดียว ฉันจะกำหนดโปรแกรมเล็ก ๆ น้อย ๆ ซึ่งทำสิ่งใดและสามารถแมปกับคีย์ได้อย่างไร
อันตราย

1
คุณสามารถบันทึกมันเป็นมาโครแล้วตั้งชื่อผูกและบันทึกตามที่อธิบายไว้ที่นี่: gnu.org/software/emacs/manual/html_node/emacs/ …
legoscia

1

วิธีที่ง่ายที่สุดที่ฉันพบคือ:

Cx RET r utf-8 RET


ยินดีต้อนรับสู่ superuser: แม้ว่าจะเป็นไปได้หรือไม่ตอบคำถาม แต่ก็เป็นคำตอบที่ดีกว่าถ้าคุณสามารถให้คำอธิบายได้ ('เหตุการณ์ใดเป็นสาเหตุ ฯลฯ ') และสาเหตุที่โซลูชันของคุณมีรายละเอียดและทำตามคำแนะนำง่าย ๆ ( OP อาจหรือไม่เข้าใจสิ่งที่ต้องทำและผู้อ่านในอนาคตก็ไม่แน่ใจเช่นกัน) หากคุณรู้สึกว่าคำตอบของคุณถูกต้องโปรดทำสิ่งเหล่านี้และแก้ไขอีกครั้ง โปรดใช้เวลาสองสามนาทีและอ่าน: - superuser.com/help. คำตอบ: superuser.com/help/how-to-answerยินดีต้อนรับสู่ superuser อีกครั้ง
ขอบคุณมาก
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.