There’s a .̸̸̸̸̸̸̸̸̸̸̸̸̸̸̸̸̸̸̸̸̸̸̸̸̨̨̨̨̨̨̨̨̨̨̨̨.̸̸̨̨ crack in your Twitter

Vor zwei Tagen begann auf Twitter ein Mem:

Dylann (dailydylann) on Twitter.jpg
2011-04-27 von @dailydylann

Ich wurde gebeten, dieses lustige Symbol kurz zu erklären, und da das nicht auf Twitter passt, hier der Blogpost.

Schauen wir uns den interessanten Teil des Tweets mal genau an:

00000000  2e cc b8 cc b8 cc a8 cc  b8 cc b8 cc a8 cc b8 cc  |................|
00000010  b8 cc b8 cc a8 cc b8 cc  b8 cc a8 cc b8 cc b8 cc  |................|
00000020  a8 cc b8 cc a8 cc b8 cc  b8 cc a8 cc b8 cc b8 cc  |................|
*
00000040  a8 cc b8 cc a8 cc b8 cc  b8 2e cc a8 cc b8 cc b8  |................|

Das 2e am Anfang ist ein ganz normaler Punkt – “.”. Danach wird’s spannend: Es folgen Kombinationen aus zwei UTF-8-Zeichen: Hexadezimal 0xCCB8: Unicode-Zeichen U+0338 “COMBINING LONG SOLIDUS OVERLAY” (Solidus = Schrägstrich); und hexadezimal 0xCCA8: Unicode-Zeichen U+0328 “COMBINING OGONEK” (Ogonek = Schwänzchen). Dann folgt nochmal ein Punkt und nochmal ein paar dieser “COMBINING”-Zeichen. Das “COMBINING” bedeutet, dass die Zeichen nicht für sich allein stehen, sondern zu dem Zeichen gehören, das vor ihnen steht, und sich mit diesem, nun ja, kombinieren.

Ich habe diese beiden Zeichen hier nochmal “allein” dargestellt, also über ein Leerzeichen gelegt:

U+0338  ̸ COMBINING LONG SOLIDUS OVERLAY
U+0328  ̨ COMBINING OGONEK

Und hier nochmal als Beispiel für die “Kombination” über den Buchstaben “a” gelegt:

a̸ = a +  ̸
ą = a +  ̨
a̸̸̸̸ = a +  ̸ +  ̸
ą̸̸̸ = a +  ̸ +  ̸ +  ̨ +  ̸

Und mit der Kombination aus dem Original-Tweet:

ą̸̸̸̸̸̸̸̸̸̸̸̸̸̸̸̸̸̸̸̸̸̸̸̸̨̨̨̨̨̨̨̨̨̨̨ = a +  ̸ ̸ ̨ ̸ ̸ ̨ ̸ ̸ ̸ ̨ ̸ ̸ ̨ ̸ ̸ ̨ ̸ ̨ ̸ ̸ ̨ ̸ ̸ ̨ ̸ ̨ ̸ ̸ ̨ ̸ ̸ ̨ ̸ ̨ ̸ ̸

Die Kombination aus mehrfachen “COMBINING”-Zeichen akkumuliert also – an ein Zeichen mit Häkchen unten wird ein weiteres Häkchen angehängt. Damit wächst das Zeichen natürlich in der Höhe. Durch die Slashes wird die Fläche “ausgefüllt”, durch die Häkchen wird es nach unten erweitert.

Für mehr Spaß mit Unicode empfehle ich als Einstieg den Wikipedia-Artikel zu UTF-8. Viel Spaß beim Durchlesen sämtlicher Unicode-Planes – Unicode kodiert momentan ja nur 1.112.064 Zeichen.

PS: UTF-8 ist leider immer noch nicht perfekt umgesetzt. Schaut man sich z.B. den Original-Tweet über den obigen Link an, sieht man die einzelnen Zeichen statt der Kombination, weil Twitter offenbar eine Dekombination in ihrer Pipeline haben. In der User-Timeline und in Twitter-Clients sieht es aber richtig aus.

13 Replies to “There’s a .̸̸̸̸̸̸̸̸̸̸̸̸̸̸̸̸̸̸̸̸̸̸̸̸̨̨̨̨̨̨̨̨̨̨̨̨.̸̸̨̨ crack in your Twitter”

  1. Ach so sollten die vielen Kästchen aussehen, die in Tweetdeck (Linux) oder in Twidroyd (Android) nie richtig dargestellt wurden.

    Naja, ist nicht mal schade drum. Wenn dieser schlechte Gag die einzige Begründung ist, weshalb man vollständig korrekte UTF-8-Darstellung braucht, dann kann ich drauf verzichten.

  2. @Andrew: Das war einfach das Ergebnis von `hexdump -Cv` ([Man-Page](http://resin.csoft.net/cgi-bin/man.cgi?section=1&topic=hexdump)) auf dem OS X-Terminal. Geht aber genauso mit jedem anderen Hex-Editor. Wichtig ist, dass die gesamte "Pipeline" UTF-8 kann, also von Copy aus Tweet bis Paste in Hex-Editor bzw. ins Terminal bzw. in eine Datei. Das ist leider immer noch nicht überall gegeben. Neuere Linux-Distros und OS X machen dabei eine gute Figur, Windows Vista und 7 soweit ich weiß, auch.

  3. @Mithos: Tweetdeck stellt sie falsch dar, weil es einen limitierten Font benutzt, der nicht alle UTF-8-Zeichen enthält. Dem kann man abhelfen, indem man in den Einstellungen auf den "International Font" wechselt. Twidroyd hat vermutlich das gleiche Problem, die Android-Fonts sind auch bei Android 2.2 noch nicht 100% Unicode oder (noch "besser") es nutzt auch einen eigenen Font.

    Diese alberne Spielerei ist natürlich kein Grund, auf korrekter Unicode-Implementierung und Full Coverage Fonts zu bestehen; ansonsten gibt es aber viele wichtige Gründe. Nur Unicode bzw. UTF-8 garantiert dir, dass du alle 1.2 Millionen kodierte Zeichen korrekt darstellen übermitteln und ggf. darstellen kannst. In der schlechten alten Zeit der Computer gab es für jede Region eigene Codepages, die nur die Zeichen dieser Region enthielten. Ein Text, der in Deutschland geschrieben wurde, wurde z.B. in Amerika mit kaputten Umlauten oder Währungssymbolen angezeigt. Außerdem wussten die Computer nicht, *welche* Codepage sie nun nehmen sollten, das war nämlich nicht kodiert. Unicode definiert all das, und das ist gar nicht so einfach. Dafür kann man dann überall Hindi oder Tamil oder Chinesisch oder Klingonisch oder Umlaute oder Euro-Zeichen schreiben, und es wird auf der ganzen UTF-8-Welt richtig verstanden und dargestellt (soweit die Fonts vorhanden sind, was aber bei allen modernen Betriebssystemen der Fall ist).

    Unicode ist großartig. Schande nur, dass es auch 2011 – 20 Jahre nach der ersten Unicode-Version – noch nicht überall komplett unterstützt wird. Die Welt wäre besser.

  4. welchen Browser muss man benutzen, damit man das sieht? Hab Fx4 auf Win7 und sehe nur eine Mischung aus Punkt, Komma und Schrägstrich aber keinen "Kratzer"..?

  5. Sehr interessant.
    Jedoch weiss ich nicht wie man solche Zeichen erstellt.
    Könnte mir jemand helfen?
    Kann man auf diese Weise selbst beliebige Zeichen erstellen? 🙂

  6. @Norman: Sollte eigentlich funktionieren. Windows 7 hat die richtigen Fonts und kann Unicode. Dachte ich zumindest bisher… jetzt hab ich’s mir eben in Windows 7 angesehen, aber es scheint die Zeichen nicht zu kombinieren. Unter OS X und iOS funktioniert es perfekt.

    @Andre: Schau dir die Unicode-Tabelle an, unter "Combining Characters", und spiel herum 🙂

  7. Zauberei, Zauberei, und so wird sie gelüftet… Sehr interessant, vielen Dank für den Artikel.

  8. Leider weiss ich nicht, wie man das mit einem Hex Editor macht 🙁
    Mal ne Frage um das über den Mac Terminal zu üben: Könntest du Beispiel Code posten, den man genau so in den Terminal ünernehmen kann? Wäre wirklich nett 🙂

Comments are closed.