Как я могу использовать vim для преобразования моего файла в utf8?

Ответы:

179

Если вы редактируете файл, закодированный как latin1, вы обнаружите, что 'fileencoding' для этого буфера установлен на latin1. Поэтому вам нужно будет вручную установить кодировку файла перед сохранением файла.

:set fileencoding=utf8
:w myfilename

Также обратите внимание, что файлы UTF8 часто начинаются с метки порядка байтов (BOM), которая указывает на порядок байтов. BOM не является обязательным , но некоторые программы используют его исключительно для определения кодировки файла. При определенных условиях Vim напишет спецификацию, но иногда нет. Чтобы явно установить спецификацию, сделайте следующее:

:set bomb

Для получения дополнительной информации :help mbyte-optionsи :help utf8и :help bomb.

Эрик Джонсон
источник
Инструкции оказываются работают нормально, но: 1) UTF-8 не имеет порядка байтов (например , объясняет ВИМ помощь , то UTF-8 BOM просто указывает , что файл является UTF-8); 2) Когда вы откроете файл позже, вам нужно будет set fileencoding=utf-8снова открыть его. Vim даже не замечает спецификации, если вы сказали ему написать ее (и он действительно ее записывает). Чтобы UTF-8 работал, вам нужно это или set encoding=utf-8в настройках запуска. По крайней мере, такова история моей системы.
Stein
35
:w ++enc=utf-8 %

записать файл в кодировке utf-8 на диск.

Михаил Крелин - хакер
источник
5
Хотя это верно, ваш ответ не должен был набрать столько голосов по сравнению с ответом Эрика Джонсона. Причина заключается в том, что если вы не установили fileencoding, то :w ++enc=utf-8действует время один, но в следующий раз при запуске :w, то значение 'fileencoding'будет использоваться, и если вы не изменили его (явно при редактировании, или путем перезагрузки файла, в надежде который 'fencs'установлен надлежащим образом, и фактическая кодировка хорошо определена), старая кодировка вернется.
Бенуа
1
@ MichaelKrelin-hacker, изменение fileencodingтакже является правильным ответом на вопрос, который, как мне кажется, не ведет к принятию вредных привычек. Но ладно, полагаю, это всего лишь вопрос настроения.
Бенуа
3
@Benoit, я не имел в виду, что ответ Эрика недействителен! Если я нахожу что-то странное в его ответе, то дело не в содержании, а скорее в том, почему он разместил вопрос и ответ на свой вопрос в быстрой последовательности :)
Майкл Крелин - хакер
3
@Michael Krelin - хакер: проверьте FAQ. На самом деле рекомендуется ответить на свой вопрос. В этом весь смысл такой страницы вопросов и ответов. Неважно, кто ответит.
0xC0000022L 04
2
@ 0xC0000022L, в прошлый раз, когда я проверял (сейчас не проверял), было что-то о том, чтобы придумать решение после проведения исследования, а не о том, чтобы опубликовать вопрос и ответ через минуту . Тем не менее, я говорил только о том, что странно в его ответе, а не о том, что делает его недействительным или что-то в этом роде.
Михаил Крелин - хакер