Heute war ich überrascht zu sehen, dass ein Typ das 140-Zeichen-Limit von Twitter gehackt hat. Die Nachricht besteht aus 930 Zeichen. Wie könnte das möglich sein?
Der direkte Link zu diesem Tweet ist hier . Der Einfachheit halber kopiere ich den Screenshot des vollständigen Tweets unten:
Antworten:
Die Nachricht enthält Unicode-Ersatzcodepunkte, die nicht ordnungsgemäß als UTF-8 codiert sind. Diese Art der falschen Codierung wird auch als CESU-8 bezeichnet . Es scheint, dass einige Twitter-Interfaces die CESU-8-codierten Ersatzcodepunkte als Zeichen akzeptieren (zum Zweck der Beschränkung auf 140 Zeichen), aber für Anzeigezwecke werden gültige UTF-8-Sequenzen erwartet, und dies sind keine gültigen UTF-8-Sequenzen. Stattdessen werden die 3 Bytes jeder dieser Sequenzen als 3 oktale Escape-Sequenzen im C-Stil mit jeweils 4 Zeichen angezeigt, und jeder Ersatzcodepunkt wird schließlich mit 12 Zeichen angezeigt.
Zum Beispiel dekodiert \ 355 \ 240 \ 265 \ 355 \ 263 \ 220, wenn es als C-escape-UTF-8 dekodiert wird, ohne Surrogate zurückzuweisen, wie dies normalerweise beim Dekodieren von UTF-8 der Fall wäre, in das Surrogatpaar U + D835 U + DCD0. Wenn dieses Ersatzpaar wie bei der Dekodierung von CESU-8 als UTF-16 behandelt wird, wird das Unicode-Zeichen U + 1D4D0 MATHEMATICAL BOLD SCRIPT CAPITAL A (𝓐) erzeugt.
Wenn das Oktal-Escaping im C-Stil dekodiert und das Ergebnis als CESU-8 interpretiert wird, ergibt sich Folgendes:
Hier ist es als Bild für diejenigen, die keinen vollständigen Satz von Unicode-Schriftarten installiert haben:
quelle
Jede Zeichengruppe, die mit einem Backslash und drei Ziffern beginnt, ist eine " Escape-Sequenz ". Jeder von ihnen steht für ein einzelnes Zeichen. Diese werden normalerweise für Zeichen verwendet, die auf Ihrer Tastatur nicht vorhanden sind, z. B. nicht englischsprachige Zeichen und Symbole.
Ich vermute, dass Twitter beim Zählen der Zeichen jede dieser Gruppen als einzelnes Zeichen zählt, aber wenn es sie dem Browser anzeigt, werden sie als vier gedruckt.
Aktualisieren:
Einige der verfügbaren Escape-Sequenzen sind "Steuerzeichen". Diese weisen den Computer an, beispielsweise einen Alarmton abzuspielen oder den Cursor nach links oder rechts oder oben oder unten zu bewegen oder das Zeichen links vom Cursor zu löschen. Obwohl keiner von ihnen der letzte ist, den ich erwähnte (Löschen des vorherigen Zeichens), könnte er dieses Zeichen auch verwendet haben, um Twitter zu verwirren.
Interessanterweise ist es, wenn es wieder in normale Zeichen umgewandelt wird, ziemlich repetitiv und sieht ungefähr so aus:
Update 2:
Die Erklärung lautete "Пишите в DM, всегда на связи)" und laut Google Translate "Write to the DM, always on connection)". Ich bin mir nicht sicher, was das genau bedeutet oder wie es hilft.
quelle