Dalam pengujian saya, mengedit UTF-8file tidak mengubah penyandian dan BOM tetap ( efbb bf). (nxml-mode)
Ya, ini bisa bervariasi antara xml-modedan nxml-mode, atau versi emacs (24 vs 26). Dikatakan mode di bagian bawah.
Jika Anda mengedit Emacs, file XML yang dikodekan dalam unicode ( UTF-16little endian), itu akan mengubah pengkodean menjadi UTF-16big endian. Mungkin itu yang dia bicarakan.
Tetapi BOM masih ada, diubah dari fffemenjadi ffef, dan nol berada pada byte ganjil bukan byte genap. Anda dapat melihatnya dalam mode hexl.
Contoh file xml. Atribut encoding mengarahkan encoding ketika emacs menyimpannya dalam mode xml atau mode nxml. Versi mendatang akan ditambal untuk memeriksa BOM terlebih dahulu.
<?xml version="1.0" encoding="UTF-16"?>
<hi />
Sepertinya Emacs mengambil UTF-16sebagai UTF-16BE, sedangkan Windows mengambil sebagai UTF-16LE(BE dan LE tidak melakukan pekerjaan di Emacs untuk atribut encoding). Atribut encoding mungkin kunci untuk masalah di sini.
Menyimpannya di PowerShell akan mengubahnya kembali ke utf-16le.
[xml]$xml = get-content test.xml; $xml.save('test.xml')
Dengan encoding = "UTF-16LE" dan encoding = "UTF-16BE", bom dihapus, membuat file tidak dapat dikenali dalam emacs. Ini adalah bug yang dikonfirmasi yang akan ditambal: http://lists.gnu.org/archive/html/bug-gnu-emacs/2019-05/msg00892.html