Буш скрыл факты

редактировать
Ошибка в Microsoft Windows

Буш скрыл факты - общее название для ошибки, присутствующей в некоторых версиях 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остается неизменным в операционной системе, поэтому любые другие инструменты, использующие

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

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

  • Редактирование текста, чтобы он не был шаблоном, который запускает эту ошибку, позволит избежать ее. Например, добавление новой строки в первые 20 символов будет работать.
  • Если файл сохранен как «UTF-8 », а не «ANSI», текст загружается правильно, потому что Блокнот добавляет перед ним знак порядка байтов UTF-8 , который является шаблоном, который не вызывает ошибку. UTF-8 без отметки порядка байтов все равно вызовет ошибку, поскольку эта последовательность в UTF-8 представлена ​​идентично ASCII.
  • Ошибки также можно избежать, сохранив как «Unicode», который в Microsoft Windows означает UTF-16LE. При загрузке этого текста IsTextUnicodeдолжен (и возвращается) возвращать истину, а текст правильный.
  • Чтобы получить исходный текст с помощью Блокнота, откройте диалоговое окно «Открыть файл», выберите файл, выберите «ANSI» или «UTF-8» в списке «Кодировка» и нажмите «Открыть». В Windows 2000 в Блокноте отсутствует список «Кодировка». этого тоже не хватает. WordPad, похоже, загружает текст правильно без выбора кодировки, поскольку он использует собственное определение кодировки.
Ссылки
Внешние ссылки
Последняя правка сделана 2021-05-13 06:39:41
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте