Hoy me sorprendió ver que un tipo hackeó el límite de 140 caracteres de Twitter. El mensaje consta de 930 caracteres. ¿Cómo puede ser esto posible?
El enlace directo a este tweet está aquí. . Por conveniencia, estoy copiando la captura de pantalla del tweet completo a continuación:
Respuestas:
El mensaje contiene puntos de código sustituto de Unicode que están codificados incorrectamente como UTF-8. Este tipo de codificación incorrecta también se llama CESU-8 . Parece que algunas interfaces de Twitter aceptarán los puntos de código sustituto codificados CESU-8 como caracteres (para el límite de 140 caracteres), pero para fines de visualización espera UTF-8 válido y estas no son secuencias UTF-8 válidas. Por lo tanto, muestra los 3 bytes de cada una de estas secuencias como 3 secuencias de escape octal de estilo C de 4 caracteres cada una, y cada punto de código sustituto termina mostrándose con 12 caracteres.
Por ejemplo, \ 355 \ 240 \ 265 \ 355 \ 263 \ 220 cuando se decodifica como C-escape UTF-8, sin rechazar sustitutos como se haría normalmente al decodificar UTF-8, decodifica al par sustituto U + D835 U + DCD0. El tratamiento de este par sustituto como UTF-16, como se haría al decodificar CESU-8, produce el carácter Unicode U + 1D4D0 CAPITAL A BORDADO MATEMÁTICO A NEGRO (𝓐).
Si el escape octal de estilo C se decodifica y el resultado se interpreta como CESU-8, se obtiene:
Aquí está como una imagen, para aquellos que no tienen un conjunto completo de fuentes Unicode instaladas:
fuente
Cada grupo de caracteres que comienza con una barra diagonal inversa y seguido de tres números es una " secuencia de escape ". Cada uno de ellos representa un solo personaje. Por lo general, se usan para caracteres que no existen en su teclado, como los caracteres y símbolos que no están en inglés.
Supongo que al contar los caracteres, Twitter cuenta cada uno de estos grupos como un solo carácter, pero cuando los muestra en el navegador los imprime como cuatro.
Actualizar:
Algunas de las secuencias de escape disponibles son "caracteres de control". Estos le dicen a la computadora que haga algo como reproducir un sonido de alerta o mover el cursor hacia la izquierda o hacia la derecha o hacia arriba o hacia abajo o eliminar el carácter a la izquierda del cursor. Aunque ninguno de ellos es el último que mencioné (eliminando el carácter anterior), también podría haber usado ese personaje para confundir a Twitter.
Curiosamente, cuando se vuelve a convertir en caracteres normales, es bastante repetitivo y se ve más o menos así:
Actualización 2:
La explicación que dio fue "Пишите в DM, всегда на связи)" que el Traductor de Google me dice es "Escribir en el DM, siempre en conexión)". No estoy seguro exactamente qué significa eso o cómo ayuda.
fuente