为什么我无法重现这个 Windows 错误?

为什么我无法重现这个 Windows 错误?

我们都知道著名的布什隐瞒了事实微软的错误。

通过互联网搜索,我发现任何以空格分隔的 4-3-3-5 大小的单词序列,保存为 .txt 文件并用记事本打开都会产生错误。

例如:

  • 啊啊啊啊啊啊啊啊啊
  • 第二和第三部分
  • 女孩你疯了吗
  • 杰特鲁伊·伊万奇·马斯

ETC。

但是,当我尝试写我的名字时,即普里达什·辛格以 的形式priy dar shi singh,并将其保存为.txt文件,它就原封不动地出来了。

为什么会发生这种情况?

答案1

根据这篇维基百科文章,从 Vista 开始这个错误已经得到修复。

这个漏洞最早出现在 1994 年发布的 Windows NT 3.5 中,但直到 2004 年初才被发现。[3] Windows 95、98、ME 和 NT 3.1 附带的记事本旧版本不包含 Unicode 支持,所以不会出现这个漏洞。

这个漏洞存在于 Windows 的所有后续版本中,直到 Windows XP 为止,但在 Windows Vista 及之后的版本中不存在。

摘自同一篇文章:

虽然“布什隐瞒了事实”是互联网上最常见的导致错误的句子,但许多句子中的字符和空格都按特定顺序排列,因此字节与有效(即使无意义)中文 Unicode 字符的 UTF-16LE 编码相匹配,也会导致该错误。其他常见的字符串包括“此应用程序可能会崩溃”、“acre vai pra globo”(葡萄牙语中的“Acre goes to Rede Globo”)和“aaaa aaa aaa aaaaa”。1即使文本“a”也会触发此错误。

这个漏洞发生在将字符串传递给 Win32 字符集检测函数 IsTextUnicode 时,该函数不包含任何其他字符。IsTextUnicode 认为这是有效的 UTF-16LE 中文,并返回 true,而应用程序则错误地将文本解释为 UTF-16LE。[2]

因此并非所有 4-3-3-5 组合都会触发该漏洞。

相关内容