apipes.blogspot.com/2006/06/this-api-can-break.html
por
SPukEYe74H el 14-06-2006 21:54 UTC, publicado el 15-06-2006 01:05 UTC
Escribe "this app can break" en un bloc de notas y guardalo con cualquier nombre y cualquier extensión. Ahora prueba a abrirlo. Vivir para ver (en Windows 2000/XP).
negativos:
0 usuarios:
220 anónimos:
0 compartir:

Por lo visto es un error de la api a la hora de detectar la encodificacion de tipo UTF-16 (pedancia +5).
¿No será algo exclusivo de Windows XP? Lo digo porque yo tengo Windows 98, entonces la noticia es errónea, debería especificar para que sistema operativo (concreto) es ¿no?
Para el que no lo vea: i7.photobucket.com/albums/y258/KarnEvil60/Graphic_5_22_20065_04_18PM.jg
En el ejemplo del meneo escribes caracteres de 8 bits y luego los interpretas como de 16. Eso petaría igual en cualquier sitio, no solo en windows. En linux estoy harto de verlo y eso que ahí unicode significa utf-8, que es compatible con ascii.
Lo malo es que el notepad no tiene una opción de cambiar la codificación sobre la marcha. Si te pasa una cosa de estas tienes que abrir otra vez el archivo y elegir ahí la codificación o usar un editor de verdad.
桴獩愠灰挠湡戠敲歡
de chino a ingles es
After 獩 indignant grey harassment 湡 personal sounded Fun
que pasandolo a español es
Después de la diversión sonada personal del 湡 gris indignado del hostigamiento del 獩
Despues de dos traducciones mas o menos literales parece que podría tener algun sentido, así que puede que si sea un huvo de pascua y no un error
#20 a mi con el resto de cadenas no me sale nada raro
EDITO: Me acabo de dar cuenta de que al volver a poner la primera cadena, guardarlo como un archivo nuevo y abrirlo, ya sale bien, así que puede que las otras cadenas si funcionen
no funciona el truco
Notepad, que tiene ANSI como código por defecto, escribe esto en el archivo (en hex)
74 68 69 73 20 61 70 70 20 63 61 6e 20 62 72 65 61 6b
Donde 74 es 't' y etc, etc. Luego, al abrirlo Notepad se hace un pequeño lío (demasiado poco texto y demasiado regular para autodetectar) y lo interpreta como si hubiera texto UTF-16LE, agrupando los bytes asi:
6874 7369 6120 7070 6320 6e61 6220 6572 6b61
Y ya está resuelto el misterio, porque 0x6874 es 桴, 0x7369 獩... Y podéis seguir descifrando (o crear más ejemplos) mirando los códigos aquí:
www.isthisthingon.org/unicode/
Para ver la frase original de nuevo en el notepad sólo tienes que marcar en el cuadro de "Abrir..." que lo haga como ansi en vez de unicode.
www.stallman.org/articles/yellow-hat.html
En el meneo explican por donde van los tiros pero si alguien quiere leer más, hace tiempo Joel escribió un artículo muy bueno sobre la problemática de las codificaciones:
www.joelonsoftware.com/articles/Unicode.html
A mí con W2000PRO me salen cuadraditos, pero al abrirlo con EDIT desde línea de comandos veo el texto correctamente.
Otro ejemplo de código malicioso en aplicaciones de M$... menos mal que hay otros visores de txt y editores que no sean preciosa kakita :D
(pedantería +5, gramática -5)
sin acritud :)
El mismo mensaje guardado como unicode y visto en edit sería dos caracteres raros (el BOM) seguido de: "t h i s a p p c a n b r e a k", donde los espacios extras no son espacios sino el caracter no imprimible 0x00.
En realidad la consola de Windows (y edit en consecuencia) tiene soporte para unicode pero no está activado por defecto por el tema de la compatibilidad. El problema de notepad --que no es una aplicación sino un ejemplo del Visual Studio-- es que por defecto escribe en un formato y por defecto tiende a leer en otro.
Por si alguien quiere probarlo, es este: www.flos-freeware.ch/notepad2.html
$ file pr
pr: ASCII text
$ cat pr
this app can break
$ echo 桴獩愠灰挠湡戠敲歡 > pr2
$ file pr2
pr2: UTF-8 Unicode text
$ cat pr2
桴獩愠灰挠湡戠敲歡
Muahaha, chúpate esa, MS!! xD
#38 file hace algo tan tonto como contar el número de caracteres imprimibles según el rango de los juegos de caracteres usuales. Ese archivo pr, si estás usando una consola UTF-8, es en realidad un archivo UTF-8 pero file no ha sido capaz de adivinarlo.