[错误] 具有 UTF-16 LE BOM 的文件显示为原始二进制/以空格分隔的字节

作者: heyjizhan创建于 2026年9月16日更新于 2026年9月16日

操作系统和版本

Windows 10 IOT企业 LTSC 21H2

分发

`.exe' 安装器从最新发布的网页部分下载

说明

在以 BOM ** (例如由 Windows PowerShell referminion QQ 生成输出) 打开编码为 **UTF-16 LE 的文本文件时,状态栏正确确认编码为"UTF-16LE BOM".

然而,编辑内容并没有被解码. 相反,生字节直接被附加在缓冲中:

  • 字节顺序标记为 XXFF\xFE 。
  • 每个 ASCII 字符用空字节相接(XX00').
  • 运算回数(\r' /0x0D')被误认为旧的Macintosh CR线断相,导致行数大致翻了一番(例如22行变为43行,角色数从878到1758年为双相,详情见截图图像).

QQ 比较截图

<img宽度="1920"高相="1080" alt="Image" src="https://GitHub.com/user-attachments/assets/ee20db00-356b-4a00-85c4-8e406411d14d"/ >

** 在图像中:**

  • ** Windows PowerShell 重定向 QQ生成的文件内容:** Python之禅 .
  • ** 与**中的Windows 10内置Notepad、Notepad++,Visual Studio代码,和(不是编辑)Google Chrome。 (所有使文件正确。)

法典中的可能原因

在“从Disk()读取”周围查看“src/ScintillaNext.cpp”:

翻译: 如果(bomType == BomType::Utf16BE || BomType::Utf16LE) { 暂时不要提这个? {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢? 附录Text(chunk.size (), buct.constData ()); ;


它似乎检测到UTF-16 BOM用于状态显示,但将UTF-16字节解码为UTF-8后再传递给"附录()"目前被评论/未执行.

* 重现步骤

在现代Windows上,在安装了Python后,打开了Windows PowerShell,然后命令:

`动力壳-c' "Python-m this" "Python-m-this powershell.txt'' '

[Python-m-this powershell.txt] (https://GitHub.com/user-attachments/files/32266504/Python-m-this powershell.txt) (中文(简体) )

内容来源: dail8859/NotepadNext