首页 > 解决方案 > 为什么 emacs (for windows) 将 xml 文件的编码从 utf-16 little endian 更改为 utf-16 big endian?

问题描述

为什么 Emacs for Windows 将 unicode (utf-16le) xml 文件的编码更改为 utf-16be 保存后不告诉我?您可以将鼠标悬停在左下角的 U 上查看编码,左键单击查看更多信息。从任务计划程序导出的 xml 文件通常是这样的。示例 xml 文件:

<?xml version="1.0" encoding="UTF-16"?>
<hi />

如果我在 powershell 中加载并保存它,它会返回到 utf-16 le(在 windows 和 osx 中)。

[xml]$xml = get-content test.xml
$xml.save('test.xml')

更糟糕的是,使用此设置会丢失 bom,并且文件已损坏,直到我在记事本中打开它并再次保存。UTF-16LE 是有效的 IANA 字符集。

<?xml version="1.0" encoding="UTF-16LE"?>
<hi />

编辑:

显然编码是由 emacs xml 模式或 nxml 模式中的 encoding= 标签指示的。有一个补丁可以改变未来 emacs 版本中的行为。如果它已经是带有 bom 的 utf16 文件,它将保持这种状态。

标签: xmlpowershellencodingemacsutf-16

解决方案


当我编辑它时,它似乎没有在有趣的选项卡中弹出。


推荐阅读