Zapisywanie „Bush ukrył fakty” w notatniku

54

Kiedy zapisując tekst „Bush ukrył fakty” w notatniku w systemie Windows XP, dlaczego po ponownym otwarciu pokazuje kwadraty zamiast tekstu?

Widziałem to w tym filmie, jeśli potrzebujesz przykładu

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

John T.
źródło
28
Nawiasem mówiąc, jest tak samo dla dowolnej sekwencji 4-3-3-5 liter, nie tylko tej.
grawity
15
Przykład: „John zjadł bekon”
Troggy

Odpowiedzi:

93

Jest to spowodowane problemem z funkcją Win32 API IsTextUnicode, która pochodzi z systemu Windows NT 3.5. Jeśli plik jest zakodowany w ANSI, funkcja zinterpretuje go jako UTF-16LE, co spowoduje, że znaki będą nieczytelne.

Zafascynowało mnie to, odkąd to odkryłem, odkąd byłem trochę młody i naiwny, myślałem, że to prawdziwy spisek :)

Tak naprawdę jest artykuł w Wikipedii na ten temat, który można znaleźć tutaj .

John T.
źródło
17
Ciekawy. +1 za artykuł na Wiki, który nauczył mnie słowa „mojibake” i jego szczególnie meta ostrzeżenie, że „bez odpowiedniego wsparcia renderowania możesz zobaczyć znaki zapytania, ramki lub inne symbole ...” :-)
jtb
3
+1, ponieważ pomimo używania systemu Windows tak długo, jak pamiętam, jakoś nigdy tego nie spotkałem!
Jared Harley,
7
Cóż, to wyraźnie błąd, ponieważ oprogramowanie niepoprawnie. Najlepsze, co możesz argumentować, to to, że takich błędów nie da się wyeliminować bez utraty innych funkcji. I, cholera, Microsoft naprawił to w Vistę [według Wiki], więc ktoś najwyraźniej myślał, że to też błąd.
John Fouhy
11
Nie jest to błąd, jeśli robi dokładnie to, co reklamuje (tj. Udokumentował). Jest dokładnie określone, że jest to test statystyczny i nie jest niezawodny, a im krótszy sygnał wejściowy, tym wyższy poziom błędu. Tak się składa, że ​​w tym przypadku zdarza się, że zdanie ma sens dla człowieka. To konkretne zdanie nie działa w systemie Vista i 7, ponieważ implementacja IsTextUnicode została zmieniona i przypuszczalnie poprawiona, a teraz poprawnie raportuje dla tego zdania. To, co mamy, to lepszy lub gorszy współczynnik fałszywie dodatnich / ujemnych, a nie błędy.
KTC
5
„To nie jest błąd, jeśli robi to, co powinien.” Tak, może technicznym terminem jest „wada projektowa” czy coś takiego, ale myślę, że większość ludzi nadal powiedziałaby, że można nazwać to błędem.
davr,