В дополнение к ответу @ jrb в Vim определяется кодировка символов файла на основе опции fileencodings. (обратите внимание на 's' в конце кодирования файла)
Т.е. в Windows значением по умолчанию для опции fileencodings является ucs-bom , что означает:
проверьте, существует ли спецификация в начале файла.
Если спецификация существует, тогда «прочитайте кодировку символов файла из спецификации».
Если спецификация не существует (и в этом случае это также означает, что все кодировки символов, указанные в параметре fileencodings не совпадают), то прочитайте файл с кодировкой символов, указанной в параметре encoding . Кодировка символов по умолчанию для опции encoding : latin1 . Теперь, поскольку latin1 является однобайтовой кодировкой символов, все байты в файле являются действительными latin1 символами (даже Nul символ ^@ который вы видите *).
* - на самом деле, ^@ - это символ новой строки в тексте буфера Vim, а не символ Nul.
Правильный способ чтения файла - указать кодировку символов вручную как UTF-16 (в этом случае UTF-16 выглядит как правильная кодировка символов).