Dans mon test, l'édition d'un UTF-8
fichier ne change pas l'encodage et la nomenclature reste ( efbb bf
). (mode nxml)
Eh bien, cela peut varier entre xml-mode
et nxml-mode
ou la version d'emacs (24 vs 26). Il indique le mode en bas.
Si vous modifiez un Emacs un fichier XML encodé en unicode ( UTF-16
petit endian), il changera l'encodage en UTF-16
big endian. C'est peut-être de cela qu'il parle.
Mais la nomenclature est toujours là, changée de fffe
en ffef
, et les valeurs nulles sont sur l'octet impair au lieu de l'octet pair. Vous pouvez le voir en mode hexl.
Exemple de fichier xml. L'attribut encoding dirige l'encodage quand emacs l'enregistre en mode xml ou en mode nxml. Une future version sera corrigée pour vérifier d'abord la nomenclature.
<?xml version="1.0" encoding="UTF-16"?>
<hi />
Il ressemble à Emacs prend UTF-16
comme UTF-16BE
, tandis que Windows le prend comme UTF-16LE
(BE et LE ne fonctionnent pas dans Emacs pour l'attribut de codage). L'attribut de codage est probablement la clé des problèmes ici.
L'enregistrer dans powershell le reconvertira en utf-16le.
[xml]$xml = get-content test.xml; $xml.save('test.xml')
Avec encoding = "UTF-16LE" et encoding = "UTF-16BE", la nomenclature est supprimée, rendant le fichier méconnaissable dans emacs. Il s'agit d'un bogue confirmé qui sera corrigé: http://lists.gnu.org/archive/html/bug-gnu-emacs/2019-05/msg00892.html