Какие факты скрывает Буш

Сегодня на работе сисадмин показал трюк с Блокнотом, о котором я не знал. Поиск в интернете показал, что об этом приеме было известно еще три года назад. Суть в следующем.

1. Откройте Notepad
2. Напечатайте «bush hid the facts»
3. Сохраните этот файл под любым именем
4. Откройте его заново.

Вместо текста, который вы только что напечатали, на экране будет набор квадратиков. Этот трюк сработает на Windows XP (дома на Windows Vista это уже не работает). Большинство людей считают, что это «пасхальное яйцо», заложенное разработчиками из Microsoft. Мои коллеги посчитали, что это прикол от программеров-индусов. На самом деле, это просто баг Notepad.

Кстати, эта фраза не единственная, приводящая к такому результату. Подойдут фразы «this app can break», «this cat can split», «jane can not dance», «text wit hou tcaps» и даже «abcd efg hij klmno» или «xxxx xxx xxx xxxxx». Что общего у этих фраз? Все они написаны маленькими латинскими буквами и содержат слова из 4, 3, 3 и 5 букв. Можно предположить, что любая строка, построенная по принципу «4-3-3-5» будет приводить к подобному результату.

В чем же дело? Проблем с написанием/сохранением текста нет — есть только с загрузкой. Оказывается, всё дело в Windows. Notepad вызывает стандартную функцию Windows, чтобы определить, написан ли текст в кодировке Unicode. Вот она-то и глючит. Возможны два объяснениня:

Первое — после того, как строка ASCII преобразуется в «цифры», Notepad воспринимает получившуюся последовательность как unicode-строку, а не как ascii. Например:
«bush hid the facts» сохраняется в файле как: 62 75 73 68 20 68 69 64 20 74 68 65 20 66 61 63 74 73
или:
7562 6873 6820 6964 7420 6568 6620 6163 7473
Каждый из этих unicode-кодов соотвествует китайскому иероглифу. Вот тут-то и начинает глючить «угадывалка» Windows. Поэтому всё дело в том, что 18 символов ASCII преобразуются в 9 символов Unicode.

Второе объяснение немного отличается, но совпадает по сути — разница между ASCII и Unicode. Когда вы сохраняете файл, кодировка по умолчанию выставлена в ANSI. Поэтому, по умолчанию файл сохраняется как ANSI. Но после открытия кодировка выставлена уже в Unicode. Notepad использует кодировку unicode по умолчаниию, поэтому получается то, что описано выше.

В интернете можно найти множество ссылок по ключеым словам bush hid the facts, и если вам интересна эта тема, то почитайте материалы самостоятельно.

Данный пост впервые был опубликован 17 апреля 2009 года на старой площадке
и перенесен для сохранения истории.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.