Буш скрыл факты - общее название для ошибки, присутствующей в некоторых версиях Microsoft Windows, из-за которой текст, закодированный в ASCII, интерпретируется так, как если бы он был UTF-16LE, в результате искаженный текст. Когда строка «Буш скрыл факты» без новой строки или кавычек была помещена в новый документ Блокнот и сохранена, закрыта и снова открыта, бессмысленная последовательность китайских иероглифов "畂 桳 栠 摩 琠 敨 映 捡 獴 "будет
Хотя «Буш скрыл факты» - это предложение, наиболее часто представляемое в Интернете для того, чтобы вызвать ошибку, ошибка может быть вызвана множеством строк с буквами и пробелами в тех же позициях, например «чххх чхх чхх чхххх». Другие последовательности также вызывают ошибку, включая даже текст «a».
Ошибка возникает, когда строка передается в Win32 определение кодировки функция IsTextUnicode
. IsTextUnicode
видит, что байты соответствуют кодировке UTF-16LE допустимых (если бессмысленные) китайские символы Unicode, делает вывод о том, что текст действителен UTF-16LE китайский и возвращает true
, а затем приложение неправильно интерпретирует текст как UTF-16LE.
Ошибка существовала с тех пор, как IsTextUnicode
был введен с Windows NT 3.5 в 1994 году, но не был обнаружен до начала 2004 года. Многие текстовые редакторы и инструменты демонстрируют такое поведение в Windows, потому что они используют IsTextUnicode
для определения кодировки текстовых файлов. Начиная с Windows Vista, Блокнот был изменен для использования другого алгоритма обнаружения, который не обнаруживает ошибки, но IsTextUnicode
остается неизменным в операционной системе, поэтому любые другие инструменты, использующие
Для этой ошибки существует несколько обходных путей:
IsTextUnicode
должен (и возвращается) возвращать истину, а текст правильный.