Além da resposta do @ jrb, no Vim, a codificação de caracteres do arquivo é detectada com base na opção codificação de arquivos. (observe os 's' no final das codificações de arquivo)
Ou seja, no Windows, o valor padrão para a fileencodingsopção é ucs-bom, o que significa:
verifique se a lista técnica existe no início do arquivo.
Se a lista técnica existir, 'leia a codificação de caracteres do arquivo fora da lista técnica'.
Se a BOM não existir (e, nesse caso, isso também significaria que todas as codificações de caracteres especificadas na fileencodingsopção falharam em corresponder), leia o arquivo com a codificação de caracteres especificada na encodingopção. A codificação de caracteres padrão para a encodingopção é: latin1. Agora, como latin1é a codificação de caracteres de um byte , todos os bytes no arquivo são latin1caracteres válidos (mesmo o Nulcaractere ^@que você está vendo *).
* - na verdade, ^@é o caractere de nova linha no texto do buffer do Vim, não o caractere Nul.
A maneira correta de ler o arquivo é especificar a codificação de caracteres manualmente como UTF-16 (pois parece que UTF-16 é a codificação char apropriada nesse caso).