Además de la respuesta de @ jrb, en Vim, la codificación de caracteres del archivo se detecta en función de la opción de codificación de archivos. (tenga en cuenta la 's' al final de las codificaciones de archivo)
Es decir, en Windows, el valor predeterminado para la fileencodings
opción es ucs-bom
, lo que significa:
compruebe si existe una lista de materiales al comienzo del archivo.
Si existe BOM, entonces 'lea la codificación de caracteres del archivo fuera de BOM'.
Si BOM no existe (y en este caso eso también significaría que todas las codificaciones de caracteres especificadas en la fileencodings
opción no coincidieron), entonces lea el archivo con la codificación de caracteres especificada en la encoding
opción. La codificación de caracteres por defecto de la encoding
opción es: latin1
. Ahora, debido a que latin1
es la codificación de caracteres de longitud de un byte , todos los bytes en el archivo son latin1
caracteres válidos (incluso el Nul
carácter ^@
que está viendo *).
* - en realidad, ^@
es el carácter de nueva línea en el texto del búfer de Vim, no el carácter Nul.
La forma correcta de leer el archivo es especificar la codificación de caracteres manualmente como UTF-16 (ya que parece que UTF-16 es la codificación de caracteres adecuada en este caso).