En mi prueba, editar un UTF-8archivo no cambia la codificación y la BOM permanece ( efbb bf). (modo nxml)
Bueno, esto puede variar entre xml-modey nxml-mode, o la versión de emacs (24 vs 26). Dice el modo en la parte inferior.
Si edita un Emacs un archivo XML codificado en unicode ( UTF-16little endian), cambiará la codificación a UTF-16big endian. Tal vez de eso está hablando.
Pero la lista de materiales sigue ahí, cambiada de fffea ffef, y los valores nulos están en el byte impar en lugar del byte par. Puedes verlo en modo hexl.
Archivo xml de muestra. El atributo de codificación dirige la codificación cuando emacs la guarda en modo xml o modo nxml. Se parcheará una versión futura para verificar primero la lista de materiales.
<?xml version="1.0" encoding="UTF-16"?>
<hi />
Parece que Emacs toma UTF-16como UTF-16BE, mientras que Windows lo toma como UTF-16LE(BE y LE no funcionan en Emacs para el atributo de codificación). El atributo de codificación es probablemente clave para los problemas aquí.
Guardarlo en powershell lo convertirá de nuevo a utf-16le.
[xml]$xml = get-content test.xml; $xml.save('test.xml')
Con encoding = "UTF-16LE" y encoding = "UTF-16BE", se elimina el bom, lo que hace que el archivo sea irreconocible en emacs. Este es un error confirmado que será parcheado: http://lists.gnu.org/archive/html/bug-gnu-emacs/2019-05/msg00892.html