Сохранение «Буш спрятал факты» в блокноте

5047
John T

При сохранении текста «Буш скрыл факты» в блокноте под Windows XP, почему при повторном открытии вместо текста отображаются квадраты?

Я видел это в этом видео, если вам нужен пример

http://www.youtube.com/watch?v=9bK9-sc_uus&feature=related

54
Кстати, это одинаково для любой последовательности из 4-3-3-5 букв, не только для этой. grawity 14 лет назад 28
Пример: "Джон съел бекон" Troggy 14 лет назад 15

1 ответ на вопрос

93
John T

Это связано с проблемой функции Win32 API IsTextUnicode, существовавшей в Windows NT 3.5. Если файл закодирован в ANSI, функция будет интерпретировать его как UTF-16LE, что приведет к нечитаемым символам.

Это тоже очаровало меня, когда я обнаружил это, так как я был отчасти молод и наивен, я думал, что это был настоящий заговор :)

На самом деле есть статья в Википедии, которую вы можете найти здесь .

Интересно. +1 за статью в вики, которая научила меня слову «mojibake» и особенно мета-предупреждению о том, что «без надлежащей поддержки рендеринга вы можете увидеть знаки вопроса, прямоугольники или другие символы ...» :-) jtb 14 лет назад 17
+1 потому что, несмотря на то, что я до сих пор помню Windows, я как-то ** никогда ** не сталкивался с этим! Jared Harley 14 лет назад 3
На самом деле это не ошибка, как утверждается в статье Рэймонда Чена, если вы перейдете по внешней ссылке в статье википедии. В документации IsTextUnicode четко указано, что функция является статистической и «не защищена от ошибок». Учитывая короткую строку, такую ​​как здесь, это не удивительно, что что-то обнаружено неправильно. KTC 14 лет назад 0
Ну, это явно ошибка, потому что программное обеспечение неправильно. Лучшее, что вы можете утверждать, это то, что такие ошибки невозможно устранить без потери других функций. И, черт возьми, Microsoft исправила это в Vista [согласно Wiki], так что кто-то там, очевидно, подумал, что это тоже ошибка. John Fouhy 14 лет назад 7
Это не ошибка, если она делает именно то, что рекламирует (т.е. документирует). Точно указано, что это статистический тест, а не надежный, и чем короче ввод, тем выше уровень ошибок. Так уж сложилось, что в этом случае это происходит с предложением, которое имеет смысл для человека. Это конкретное предложение не работает с Vista & 7, потому что реализация IsTextUnicode была изменена и предположительно улучшена, и теперь он правильно сообщает для этого предложения. То, что мы имеем, лучше или хуже ложных срабатываний / отрицательных показателей, а не ошибок. KTC 14 лет назад 11
-1 для восемнадцатилетней поговорки «назад, когда ... я был отчасти молодым». (шучу, я на самом деле не поносил тебя) Graeme Perrow 14 лет назад 1
«Это не ошибка, если он делает то, что должен». Да, может быть, технический термин - «недостаток дизайна» или что-то в этом роде, но я думаю, что большинство людей все равно сказали бы, что можно назвать это ошибкой. davr 14 лет назад 5
@ Джон Это была особенная черта. Mateen Ulhaq 13 лет назад 0
Как-то, как я сюда попал, два года спустя. Существует обязательное сообщение в блоге Old New Thing и ссылка на машину времени. http://blogs.msdn.com/b/oldnewthing/archive/2007/04/17/2158334.aspx surfasb 12 лет назад 0

Похожие вопросы