Điều này đã xảy ra với tôi một thời gian trước khi tôi có ý tưởng về những gì đang diễn ra - đây là một ví dụ về cách điều này có thể xảy ra - (nếu nó quan trọng, tôi đang ở trên Windows, trong trường hợp đó là một cái gì đó cụ thể cho bản dựng này) -
Giả sử bạn có một tệp được mã hóa bằng UTF-8 và bạn dán một số văn bản từ một trang web được mã hóa bằng trang mã Latin-1 hoặc Windows-1252, ví dụ: O với một dấu ngoặc kép hoặc dấu ngoặc kép.
Bây giờ bạn có một chuỗi các ký tự được mã hóa UTF-8 theo sau là một cái gì đó không có ý nghĩa với UTF-8 hoặc có thể sẽ bị hiểu sai. Nếu nó không thể hiểu nó là một chuỗi UTF-8 chính xác, nó sẽ hiển thị nó dưới dạng giá trị thô, ví dụ: bát phân \ 326 (là một chữ O có âm sắc trong trang mã Latin-1). Điều này là do UTF-8, đặc biệt là \ 326 được theo sau bởi thứ gì đó có 10 ở hai bit cao nhất và nếu không, nó không biết phải làm gì với nó.
Ví dụ: nếu bạn đã truy cập https://www.gnu.org/software/emacs/manual/html_node/emacs/Intro.html#Intro và sao chép một số văn bản có trích dẫn xoăn, như "` G 'trong GNU " và dán nó vào bộ đệm được mã hóa UTF-8, bạn sẽ kết thúc với "The \ 221G \ 222 trong GNU".
Vậy lam gi?
Đối với một điều, bạn có thể nhìn vào bộ đệm với các hệ thống mã hóa khác nhau để xem liệu nó có hiển thị chính xác các ký tự đó không, ví dụ: Windows-1252 và Latin-1 khá phổ biến -
M-x revert-buffer-with-coding-system windows-1252 RET
M-x revert-buffer-with-coding-system latin-1 RET
Nếu tài liệu này trông tốt hơn theo cách này, bạn có thể lưu nó với mã hóa mới này. Có rất nhiều hệ thống mã hóa khác nhau mặc dù.
Để đưa nó trở lại UTF-8, chỉ cần làm
M-x revert-buffer-with-coding-system utf-8 RET
Về lý do tại sao điều này xảy ra, tôi không chắc chắn - có vẻ như Emacs sẽ biết làm thế nào một cái gì đó được mã hóa trong bảng tạm và dịch nó theo đó, nhưng dường như nó không làm điều này.
Để biết thêm giải thích, hãy xem /programming/1543613/how-does-utf-8-variable- thong-encoding-work và http://kunststube.net/encoding/ .
-*- coding: utf-8-hfs-unix;-*-
vào dòng đầu tiên của tập tin của bạn? ( gnu.org/software/emacs/manual/html_node/emacs/NH )