Aujourd'hui, j'ai été surpris de voir qu'un gars a piraté la limite de 140 caractères de Twitter. Le message comprend 930 caractères. Comment cela pourrait être possible?
Le lien direct vers ce tweet est ici . Pour plus de commodité, je copie la capture d'écran du tweet complet ci-dessous:
Réponses:
Le message contient des points de code de substitution Unicode mal codés au format UTF-8. Ce type de codage incorrect s'appelle également CESU-8 . Il semble que certaines interfaces Twitter acceptent les points de code de substitution codés par CESU-8 en tant que caractères (aux fins de la limite de 140 caractères), mais pour l'affichage, ils attendent des valeurs UTF-8 valides, qui ne sont pas des séquences UTF-8 valides. Il affiche donc les 3 octets de chacune de ces séquences sous forme de 3 séquences d'échappement octales de style C de 4 caractères chacune, et chaque point de code de substitution finit par être affiché avec 12 caractères.
Par exemple, \ 355 \ 240 \ 265 \ 355 \ 263 \ 220 décodé en tant que UTF-8 échappé de C, sans rejeter les substituts comme cela serait normalement le cas lors du décodage de UTF-8, décodé en paire de substitution U + D835 U + DCD0. Le traitement de cette paire de substitution comme UTF-16, comme lors du décodage de CESU-8, produit le caractère Unicode U + 1D4D0 MAJUSCULE SCHEMA GRASSE A (𝓐).
Si l'échappement octal de style C est décodé et que le résultat est interprété comme CESU-8, il en résulte:
La voici sous forme d'image, pour ceux qui ne disposent pas d'un jeu complet de polices Unicode:
la source
Chaque groupe de caractères commençant par une barre oblique inversée et suivie de trois chiffres constitue une " séquence d'échappement ". Chacun d'eux représente un seul personnage. Celles-ci sont généralement utilisées pour les caractères qui n'existent pas sur votre clavier, tels que les caractères et symboles autres que l'anglais.
Mon hypothèse est que, lors du comptage des caractères, Twitter comptabilise chacun de ces groupes comme un seul caractère mais lors de leur affichage sur le navigateur, il les imprime en tant que quatre.
Mise à jour:
Certaines des séquences d'échappement disponibles sont des "caractères de contrôle". Celles-ci indiquent à l'ordinateur de faire quelque chose, par exemple émettre un son d'alerte, déplacer le curseur à gauche ou à droite ou vers le haut ou le bas, ou supprimer le caractère situé à gauche du curseur. Bien qu'aucun d'entre eux ne soit le dernier que j'ai mentionné (en supprimant le caractère précédent), il aurait peut-être également utilisé ce caractère pour confondre Twitter.
Fait intéressant, une fois reconverti en caractères normaux, il est assez répétitif et ressemble à ceci:
Mise à jour 2:
L'explication qu'il a donnée était "Пишите в DM, всегда на связи)", ce que Google Translate m'a dit est "Écrivez au DM, toujours en connexion)". Je ne sais pas exactement ce que cela signifie ni comment cela aide.
la source