No meu teste, editar um UTF-8
arquivo não altera a codificação e a BOM permanece ( efbb bf
). (modo nxml)
Bem, isso pode variar entre xml-mode
e nxml-mode
, ou a versão do emacs (24 vs 26). Diz o modo na parte inferior.
Se você editar um arquivo XML do Emacs e codificado em unicode ( UTF-16
little endian), ele mudará a codificação para UTF-16
big endian. Talvez seja sobre isso que ele está falando.
Mas a lista técnica ainda está lá, alterada de fffe
para ffef
, e os nulos estão no byte ímpar, em vez do par. Você pode vê-lo no modo hexl.
Arquivo xml de amostra. O atributo encoding direciona a codificação quando o emacs a salva no modo xml ou nxml. Uma versão futura será corrigida para verificar primeiro a lista técnica.
<?xml version="1.0" encoding="UTF-16"?>
<hi />
Parece que o Emacs aceita UTF-16
como UTF-16BE
, enquanto o Windows aceita como UTF-16LE
(BE e LE não funcionam no Emacs para o atributo de codificação). O atributo de codificação é provavelmente a chave para os problemas aqui.
Salvá-lo no PowerShell o converterá novamente em utf-16le.
[xml]$xml = get-content test.xml; $xml.save('test.xml')
Com codificação = "UTF-16LE" e codificação = "UTF-16BE", o bom é removido, tornando o arquivo irreconhecível no emacs. Este é um bug confirmado que será corrigido: http://lists.gnu.org/archive/html/bug-gnu-emacs/2019-05/msg00892.html