Câu trả lời:
Cài đặt mã hóa tệp hiển thị mã hóa bộ đệm hiện tại:
:set fileencoding
fileencoding=utf8
Thực sự không có cách phổ biến nào để xác định mã hóa của tệp văn bản gốc, vì thông tin đó không được lưu trong chính tệp đó - ngoại trừ Tệp UTF-8 nơi bạn có một BOM được gọi là Mã hóa. Đây là lý do tại sao các tệp xml và html có siêu dữ liệu bảng mã.
Bạn có thể thực thi một mã hóa cụ thể với cài đặt 'mã hóa'. Xem :help encodingvà :help fileencodingtrong Vim để biết cách trình soạn thảo xử lý các cài đặt này. Bạn cũng có thể thêm một số cài đặt mã hóa tệp vào vimrc của mình để vim thử phát hiện dựa trên các cài đặt được liệt kê.
Lưu ý rằng mã hóa của tệp không được nêu rõ ràng ở bất kỳ đâu trong tệp. Do đó, VIM và các ứng dụng khác phải đoán mã hóa. Cách thức hợp quy để thực hiện việc này là với chardetứng dụng, có thể được chạy từ bên trong VIM như sau:
:!chardet %
Câu trả lời được cung cấp bởi jtimberman cho bạn thấy mã hóa của bộ đệm hiện tại có thể không phải là mã hóa giống như tệp trên đĩa. Do đó, bạn sẽ nhận thấy rằng chardetđôi khi sẽ hiển thị một mã hóa khác với VIM, đặc biệt nếu bạn đã cấu hình VIM để luôn sử dụng một mã hóa cụ thể (ví dụ UTF-8).
Điều thú vị chardetlà nó mang lại điểm tin cậy cho dự đoán của nó, trong khi VIM có thể (và thường là) sai về việc đoán mã hóa nếu không có nhiều ký tự trên \ x7F (ASCII 127). Chẳng hạn, việc thêm một אtập tin vào một đoạn mã PHP dài khiến người ta chardetnghĩ rằng tập tin đó ISO-8859-2có độ tin cậy là 0,72, trong khi việc thêm cụm từ dài hơn một chút שלום, עולם!sẽ cho UTF-8 với điểm tin cậy là 0,99. Trong cả hai trường hợp, set fileencoding?cho thấy UTF-8không phải vì tệp trên đĩa là UTF-8, mà vì VIM được cấu hình để sử dụng UTF-8 trong nội bộ.
chardet <file>. Tuy nhiên, đề nghị tốt.
Tôi thấy rằng: https://vim.fandom.com/wiki/Reloading_a_file_USE_a_different_encoding
Bạn có thể tải lại một tệp bằng mã hóa khác nếu Vim không thể phát hiện mã hóa chính xác:
:e ++enc=<encoding>
nơi encodingcó thểcp850, ISO-8859-1, UTF-8, ...
Bạn có thể sử dụng file yourfilenameđể tìm mã hóa hoặc chardetect(được cung cấp bởi python-chardethoặc uchardettùy thuộc vào bản phân phối Linux của bạn) theo đề xuất của dotancohen.