Làm cách nào để sử dụng vim để chuyển đổi tệp của tôi thành utf8?


Câu trả lời:


179

Nếu bạn đang chỉnh sửa tệp được mã hóa dưới dạng latin1, bạn sẽ thấy rằng 'mã tệp' cho bộ đệm đó được đặt thành latin1. Vì vậy, bạn sẽ cần phải đặt mã tệp theo cách thủ công trước khi lưu tệp.

:set fileencoding=utf8
:w myfilename

Cũng xin lưu ý rằng các tệp UTF8 thường bắt đầu bằng Dấu thứ tự Byte (BOM) cho biết mức độ bền vững. Các BOM là không bắt buộc nhưng một số chương trình sử dụng nó độc quyền để xác định mã hóa tập tin. Trong những điều kiện nhất định, Vim sẽ ghi BOM nhưng đôi khi không. Để đặt BOM một cách rõ ràng, hãy làm như sau:

:set bomb

Để biết thêm thông tin :help mbyte-options:help utf8:help bomb.


Các hướng dẫn hóa ra hoạt động tốt, nhưng: 1) utf-8 không có tính bền (như vim help giải thích , utf-8 BOM chỉ đơn thuần chỉ ra rằng tệp utf-8); 2) Khi bạn mở lại tệp sau đó, bạn cần phải có set fileencoding=utf-8lại từ trước. Vim thậm chí không nhận thấy BOM nếu bạn yêu cầu nó viết một cái (và nó thực sự viết nó). Để làm cho utf-8 hoạt động, bạn cần điều đó hoặc set encoding=utf-8trong cài đặt khởi động của mình. Ít nhất, đó là câu chuyện trên hệ thống của tôi.
Stein

35
:w ++enc=utf-8 %

để ghi tệp ở dạng mã hóa utf-8 vào đĩa.


5
Mặc dù điều này là chính xác, nhưng câu trả lời của bạn không nên thu thập nhiều lượt ủng hộ so với câu trả lời của Eric Johnson. Lý do là nếu bạn không đặt fileencoding, :w ++enc=utf-8giá trị hợp lệ một lần, nhưng lần sau khi bạn chạy :w, giá trị của 'fileencoding'sẽ được sử dụng và nếu bạn chưa thay đổi nó (rõ ràng trong khi chỉnh sửa hoặc bằng cách tải lại tệp, hy vọng mà 'fencs'được thiết lập một cách thích hợp và mã hóa thực tế là tốt phát hiện), mã hóa cũ sẽ quay trở lại.
Benoit

1
@ MichaelKrelin-hacker, thay đổi fileencodingcũng là một câu trả lời hợp lệ cho câu hỏi, điều này không IMO dẫn đến thói quen xấu. Nhưng OK, tôi cho rằng đó chỉ là vấn đề tâm trạng.
Benoit

3
@Benoit, tôi không ngụ ý câu trả lời của Eric không hợp lệ! Nếu tôi tìm thấy bất cứ điều gì lạ về câu trả lời của mình, nó không phải là nội dung, mà là tại sao ông gửi các câu hỏi và câu trả lời cho câu hỏi của mình trong kế nhanh chóng :)
Michael Krelin - tin tặc

3
@Michael Krelin - hacker: kiểm tra Câu hỏi thường gặp. Nó thực sự được khuyến khích để trả lời câu hỏi của riêng bạn. Đó là toàn bộ điểm của một trang Hỏi & Đáp như trang này. Ai trả lời không quan trọng.
0xC0000022L

2
@ 0xC0000022L, lần trước tôi đã kiểm tra (chưa kiểm tra bây giờ), có điều gì đó về việc đưa ra giải pháp sau khi thực hiện nghiên cứu, không phải về việc đăng câu hỏi và câu trả lời trong một phút . Điều đó nói rằng, tôi chỉ đang nói về những gì kỳ lạ trong câu trả lời của anh ấy, không phải điều gì làm cho nó không hợp lệ hay gì đó.
Michael Krelin - hacker
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.