「Bush hid the facts」(ブッシュは事実を隠蔽した)とは、
Microsoft Windowsの一部のバージョンにおいて確認された、特定の文字列が
文字化けする現象の通称です。この現象は、
ASCIIでエンコードされた特定の文字列が、
UTF-16LEとして誤って解釈されることで発生します。中でも「Bush hid the facts」という文字列は、
メモ帳で新規ファイルとして保存し、再度開くと「畂桳栠摩琠敨映捡獴」という、意味不明な漢字の羅列に変化することから、この名前で呼ばれるようになりました。
この文字列に登場する「ブッシュ」とは、第43代アメリカ合衆国大統領の
ジョージ・W・ブッシュのことです。この
文字化け現象は、当初
バグではなく、ブッシュ政権がMicrosoftに依頼して隠蔽工作を行っていたという
陰謀論ジョークとして広まりました。しかし、この現象は「hhhh hhh hhh hhhhh」や「this app can break」(このアプリは壊れる)といった他の文字列でも発生することが確認されています。これらの文字列は、同じ位置に文字やスペースが含まれていれば再現可能であり、特定の文字列のみに起こる現象ではないことが明らかになりました。
この
バグの根本的な原因は、Win32 API内の文字エンコード検出関数である「IsTextUnicode」の誤作動にあります。この関数は、対象の文字列が有効な
UTF-16LEコードである場合に「True」を返すものですが、誤って
UTF-16LEであると判定してしまうことで、
文字化けが発生します。この
バグは2004年初頭に発見されましたが、実は「IsTextUnicode」が初めて搭載された
Microsoft Windows NT 3.5(1994年リリース)の時点から存在していた可能性があります。つまり、10年近く潜在的に存在していたことになります。
この問題は、2006年にリリースされたWindows Vista版の
メモ帳において、文字エンコード判定に「IsTextUnicode」を使用しないアルゴリズムに変更されたことで、発生しなくなりました。しかし、依然として「IsTextUnicode」を使用している多くの
テキストエディタやツールでは、この
バグが残存しています。したがって、特定の文字列を扱う際には、文字コードの取り扱いに注意が必要です。
この現象は、コンピュータにおける文字コードとエンコードの問題、そしてソフトウェアにおける
バグの発生と、その影響範囲を理解する上で非常に興味深い事例です。また、単なる
バグが
陰謀論という形に発展し、人々の好奇心を刺激する点も、特筆すべきでしょう。技術的な側面と、社会的な側面の両方から、この「Bush hid the facts」の
バグは、コンピュータ史における一つの面白いエピソードとして記憶されています。
出典:
The Notepad file encoding problem, redux – Raymond Chen
IsTextUnicode – MSDN Library