WinMerge合并XML文件时内容显示为中文乱码如何解决?
问题原因
- UTF-16编码分为小端序(UTF-16 LE)和大端序(UTF-16 BE)两种格式,你之前选择的WinMerge「Unicode」选项默认匹配系统默认字节序,和你文件实际存储的字节序不一致就会出现乱码。
- 如果你是通过VS Code将文件保存为无BOM的UTF-16编码,WinMerge无法自动检测编码类型,只会按照默认编码解析,也会触发乱码问题。
- 你切换为UTF-8编码的操作本身是无效的,UTF-8和UTF-16的存储逻辑完全不同,强制用UTF-8解析UTF-16文件必然出现乱码。
解决方案
方法1:手动指定匹配的UTF-16字节序
在WinMerge中打开文件后,依次点击菜单栏的「编辑」→「编码」,不要选择通用的「Unicode」,手动尝试选择UTF-16 LE或UTF-16 BE,匹配到文件实际字节序后即可正常显示内容。
方法2:转换为带BOM的UTF-8编码(兼容性最好)
用VS Code打开两份XML文件,点击右下角的当前编码显示栏,先选「通过编码重新打开」确认是UTF-16编码确保内容正常,再点击编码栏选择「通过编码保存」,选择「UTF-8 with BOM」,保存后再用WinMerge打开即可正常识别,后续使用也不会出现编码适配问题。
方法3:修改WinMerge默认编码检测规则
打开WinMerge的「编辑」→「选项」→「代码页」设置页,勾选「允许检测UTF-16编码」,同时将UTF-16相关编码的检测优先级调到最高,后续打开UTF-16编码的文件会自动匹配,不需要每次手动调整。
内容的提问来源于stack exchange,提问作者Felix Arnold
相关产品推荐
相关产品推荐

