[错误] 具有 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