jueves, junio 15, 2006

Fallo en Notepad (Windows)

Haz un experimento muy sencillo si dispones de Windows en tu ordenador. Crea un nuevo documento de texto en el escritorio. Escribe "this app can break" (sin comillas y en minúsculas), guárdalo y ciérralo. Vuélvelo a abrir.

Venga, ¿a qué esperas? No sigas leyendo, primero hazlo.

¿Ya? Bien, te habrás encontrado con unos caracteres chinos o en su defecto cuadraditos si no tienes instaladas las fuentes chinas.

¿Qué ha pasado? ¿Es un huevo de pascua (una chorradilla que los programadores incluyen en su código como broma)? No.

Explicación breve:
Windows (que no el Notepad) está mal programado.

Explicación larga y técnica:
Los archivos de texto codificados en UTF-16 empiezan con una secuencia de dos bytes que se lo indican. Para averiguar en Notepad si es un archivo ASCII, UTF-16 o lo que sea primero hace una llamada al API de Windows. En este caso a isTextUnicode(), que en vez de leer los dos primeros bytes hace otra cosa, que es más eficiente, pero tiende a confundirse si el archivo es una cadena ASCII muy corta con un número par de letras minúsculas. Como es el caso.

Curioso, ¿verdad?

Vía:
Menéame
Aftermarket pipes


Tags Technorati: , ,

1 comentario:

Anónimo dijo...

Jjajaj, me gusta la versión corta :D