Буш скрыл факты - Bush hid the facts

Буш скрыл факты это общее название для ошибка присутствует в некоторых версиях Майкрософт Виндоус, в результате чего текст, закодированный в ASCII интерпретироваться так, как если бы это было UTF-16LE, в результате чего искаженный текст. Когда строка «Буш скрыл факты» без новой строки и кавычек была вставлена ​​в новый Блокнот документ и сохранены, закрыты и снова открыты, бессмысленная последовательность китайские иероглифы "вместо этого появится ".

Пока "куст скрыл факты "- это приговор, наиболее часто встречающийся на Интернет чтобы вызвать ошибку, ошибка может быть вызвана множеством строк с буквами и пробелами в одинаковых позициях, например "хххх ххх ххх ххххх".[1] Другие последовательности также вызывают ошибку, включая даже текст "а".

Ошибка возникает, когда строка передается Win32 определение кодировки функция IsTextUnicode. IsTextUnicode видит, что байты соответствуют кодировке UTF-16LE допустимых (если бессмысленно) китайских символов Unicode, делает вывод, что текст является допустимым UTF-16LE Chinese, и возвращает истинный, а затем приложение неправильно интерпретирует текст как UTF-16LE.[2]

Ошибка существовала с IsTextUnicode был представлен с Windows NT 3.5 в 1994 году, но не был обнаружен до начала 2004 года.[3] Многие текстовые редакторы и инструменты демонстрируют такое поведение в Windows, потому что они используют IsTextUnicode для определения кодировки текстовых файлов. По состоянию на Виндоус виста, Блокнот был изменен для использования другого алгоритма обнаружения, который не обнаруживает ошибки, но IsTextUnicode остается неизменным в операционной системе, поэтому любые другие инструменты, использующие эту функцию, по-прежнему подвержены влиянию.[4]

Обходные пути

Для этой ошибки существует несколько обходных путей:

  • Редактирование текста так, чтобы он не являлся шаблоном, вызывающим эту ошибку, позволит избежать ее. Например, добавив новая линия в первые 20 символов будут работать.
  • Если файл сохранен как "UTF-8 "вместо" ANSI "текст загружается правильно, потому что Блокнот добавляет UTF-8 метка порядка байтов, который не вызывает ошибки. UTF-8 без метка порядка байтов все равно вызовет ошибку, поскольку эта последовательность представлена ​​в UTF-8 идентично, как и в ASCII.
  • Этой ошибки также можно избежать, сохранив как «Unicode», что в Microsoft Windows означает UTF-16LE. При загрузке этого текста IsTextUnicode должен (и действительно) вернуть истину, а текст правильный.
  • Чтобы получить исходный текст с помощью Блокнота, откройте диалоговое окно «Открыть файл», выберите файл, выберите «ANSI» или «UTF-8» в списке «Кодировка» и нажмите «Открыть». В Windows 2000 в Блокноте отсутствует список «Кодировка». Блокнот2 этого тоже не хватает. Word Pad кажется, что текст загружается правильно без выбора кодировки, поскольку он использует собственное определение кодировки.

Рекомендации

  1. ^ Кристенсен, Бретт М. (2 ноября 2009 г.). "Буш скрыл факты - заявление о заговоре в блокноте". Убийца мистификации.
  2. ^ Чен, Раймонд (24 марта 2007 г.). «Некоторые файлы в Блокноте появляются странно - The Old New Thing». blogs.msdn.com.
  3. ^ Кэмпс, Дэвид (27 февраля 2004 г.). «Ошибка в блокноте? Проблема с кодировкой?». Блог #region .Net. Получено 15 февраля, 2009.
  4. ^ Каплан, Майкл С. (25 марта 2008 г.). «Буш, возможно, все еще скрывал факты, но он не может скрыть их от Vista SP1 / Server 2008 Notepad». Получено 13 апреля 2017.

внешняя ссылка