Dalam pengujian saya, mengedit UTF-8
file tidak mengubah penyandian dan BOM tetap ( efbb bf
). (nxml-mode)
Ya, ini bisa bervariasi antara xml-mode
dan nxml-mode
, atau versi emacs (24 vs 26). Dikatakan mode di bagian bawah.
Jika Anda mengedit Emacs, file XML yang dikodekan dalam unicode ( UTF-16
little endian), itu akan mengubah pengkodean menjadi UTF-16
big endian. Mungkin itu yang dia bicarakan.
Tetapi BOM masih ada, diubah dari fffe
menjadi 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-16
sebagai 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