Ответ 1
Из doc:
: write ++ enc = utf-8 russian.txt
Итак, вы должны иметь возможность изменить кодировку как часть команды записи.
Я использую vim для изменения окончаний строки файла:
$ file file
file: ASCII text, with CRLF line terminators
$ vim file
:set ff=mac
:wq
$ file file
file: ASCII text, with CR line terminators
Можно ли использовать аналогичный процесс для изменения кодировки в формате Unicode? Я пытаюсь сделать следующее, что не работает:
$ file file.xml
file.xml: Unicode text, UTF-16, little-endian
$ vim file
:set encoding=utf-8
:wq
$ file file.xml
file.xml: Unicode text, UTF-16, little-endian
Я видел кто-то сказал, что он может "установить fileencoding = utf-8, а затем обновить и записать файл, и он работает", но Кажется, мне что-то не хватает, иначе он был в замешательстве. Я не знаю, что он имел в виду под "затем обновлением".
Из doc:
: write ++ enc = utf-8 russian.txt
Итак, вы должны иметь возможность изменить кодировку как часть команды записи.
Обратите внимание, что существует разница между
set encoding
и
set fileencoding
В первом случае вы измените кодировку вывода, которая отображается в терминале. Во втором случае вы измените выходную кодировку записываемого файла.
При использовании vim делать это вполне возможно, почему бы вам просто не использовать iconv? Я имею в виду - загрузка текстового редактора просто для преобразования кодировки, похоже, с использованием слишком большого молотка для слишком маленького гвоздя.
Просто:
iconv -f utf-16 -t utf-8 file.xml > file.utf8.xml
И все готово.
Как и ваши шаги, настройка файлового кодирования должна работать. Тем не менее, я хотел бы добавить один "набор бомб", чтобы помочь редактору рассмотреть файл как UTF8.
$ vim file
:set bomb
:set fileencoding=utf-8
:wq
Может быть полезно изменить encoding только в командной строке перед чтением файла:
rem On MicroSoft Windows
vim --cmd "set encoding=utf-8" file.ext
# In *nix shell
vim --cmd 'set encoding=utf-8' file.ext