xml - 为什么 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 文件,它将保持这种状态。
解决方案
当我编辑它时,它似乎没有在有趣的选项卡中弹出。
推荐阅读
- java - 使用 Eclipse 自动重复 java 文本输入
- android - Android 上的 Cordova-plugin-file Encoding_Err
- r - 用数据框中的另一列标记 x 轴
- swift - 是否可以使用 CoreML 模型检测对象并找到该对象的测量值?
- c++ - ZMQ - 丢包
- android - 如何在每次点击时将 Android 按钮中编辑文本的最大长度字符限制增加 10 个?
- vue.js - 以编程方式设置输入值不会刷新组件 DOM
- r - openxlsx 使用与我的普通 Excel 应用程序不同的表格样式
- android - setDefaultNightMode() 仅在 PreferenceFragment 中的第二次调用后有效
- sql-server - SQL Server 中的按位运算