Zum Hauptinhalt springen
Diese Seite erläutert, wie Zeichen beim Verfassen von Tweets und in der X API behandelt werden. Weitere Details zur Implementierung stellt X mit der Open‑Source‑Bibliothek twitter-text bereit, die auf GitHub verfügbar ist.

Hintergrund

X begann als SMS-basierter Dienst. Dadurch war die ursprüngliche Tweet-Länge auf 140 Zeichen begrenzt (teilweise aufgrund des 160-Zeichen-Limits von SMS, wobei 20 Zeichen für Befehle und Benutzernamen reserviert waren). Im Laufe der Zeit, als sich X weiterentwickelte, stieg die maximale Tweet-Länge auf 280 Zeichen – weiterhin kurz und knapp, aber mit mehr Ausdrucksmöglichkeiten.

Definition eines Zeichens

In den meisten Fällen kann der Textinhalt eines Tweets bis zu 280 Zeichen oder Unicode-Glyphen enthalten. Manche Glyphen zählen als mehr als ein Zeichen. Ob ein Glyphe als ein oder mehrere Zeichen gezählt wird, bezeichnen wir als ihr Gewicht. Die genaue Definition, welche Zeichen ein Gewicht von mehr als einem Zeichen haben, findet sich in der Konfigurationsdatei der twitter-text-Bibliothek zur Tweet-Analyse. Die aktuelle Version der Konfigurationsdatei definiert ein Standardgewicht von zwei Zeichen sowie vier Bereiche von Unicode-Codepunkten, die abweichend gewichtet werden. Derzeit werden Codepunkte in diesen Bereichen jeweils als ein einzelnes Zeichen gezählt.
  • Der erste Bereich umfasst Zeichen aus den Latin-1-Codepages (U+0000–U+10FF).
  • Der zweite Bereich umfasst allgemeine Interpunktionszeichen bis einschließlich des Zero Width Joiner (zum Kombinieren von Emoji und anderen Glyphen) (U+2000–U+200D).
  • Der dritte Bereich umfasst allgemeine Interpunktionszeichen, ausgenommen U+200E und U+200F, bei denen es sich um Unicode-Richtungszeichen handelt (U+2010–U+201F).
  • Der letzte Bereich umfasst Anführungszeichen (U+2032–U+2037).
Beispiele für Tweet-Text und von der twitter-text-Bibliothek berechnete Längen finden sich in der Testkonfigurationsdatei validate.yml der Bibliothek. Beispiele
Angezeigtes ZeichenLängeBeschreibungUnicode-Sequenz
a1Lateinischer Kleinbuchstabe aU+0061
á1Lateinischer Kleinbuchstabe a mit AkutU+00E1
ӑ1Kyrillischer Kleinbuchstabe a mit BreveU+04D1
1Lateinischer Großbuchstabe O mit Zirkumflex und AkutU+1ED2

Emojis

Von twemoji unterstützte Emoji zählen immer als zwei Zeichen, unabhängig von kombinierenden Modifikatoren. Dazu gehören Emoji, die durch Fitzpatrick-Hauttonmodifikatoren oder Geschlechtsmodifikatoren verändert wurden, selbst wenn sie aus deutlich mehr Unicode-Codepoints bestehen. Das Emoji-Gewicht wird in twitter-text durch einen regulären Ausdruck definiert, der nach Sequenzen standardisierter Emoji sucht, die mit einem oder mehreren Unicode Zero Width Joiners (U+200D) kombiniert sind. Beispiele
Angezeigtes EmojiLängeBeschreibungUnicode-Sequenz
👾2Standardlänge bekannter Emoji
🙋🏽2Emoji mit Hauttonmodifikator🙋 U+1F64B, 🏽 U+1F3FD
👨‍🎤2Emoji-Sequenz mit kombiniertem Glyph (Zero-Width-Joiner)👨 U+1F468, U+200D, 🎤 U+1F3A4
👨‍👩‍👧‍👦2Emoji-Sequenz mit mehreren kombinierten Glyphen (Zero-Width-Joiners)👨 U+1F468, U+200D, 👩 U+1F469, U+200D, 👧 U+1F467, U+200D, 👦 U+1F466

Chinesische/Japanische/Koreanische Glyphen

In CJK-Sprachen (Chinesisch/Japanisch/Koreanisch) verwendete Glyphen zählen ebenfalls als zwei Zeichen. Daher kann ein Tweet, der nur aus CJK-Text besteht, maximal 140 solcher Glyphen enthalten.

Entitätsobjekte

Tweets können Entitätsobjekte enthalten, von denen einige die Länge eines Tweets beeinflussen. URLs: Alle URLs werden in t.co-Links umgeschrieben. Das bedeutet, dass die Länge einer URL durch den Parameter transformedURLLength in der twitter-text-Konfigurationsdatei definiert ist. Die aktuelle Länge einer URL in einem Tweet beträgt 23 Zeichen, selbst wenn die URL normalerweise kürzer wäre. Antworten: @Handles, die am Anfang eines Antwort-Tweets automatisch eingefügt werden, zählen nicht zum Zeichenlimit. Neue Tweets ohne Bezug, die mit einer @Mention beginnen, werden gezählt; ebenso @Mentions, die vom Nutzer ausdrücklich im Text des Tweets hinzugefügt werden. Medien: Medien, die an einen Tweet angehängt sind und bei Veröffentlichung über einen offiziellen Client als pic.x.com-URL dargestellt werden, zählen mit 0 Zeichen. Weitere Informationen zu Entitätsobjekten finden Sie in der Entwicklerdokumentation.

X-Zeichenkodierung

X API endpoints akzeptieren nur UTF-8-codierten Text. Alle anderen Codierungen müssen vor dem Senden des Textes an die API in UTF-8 konvertiert werden. X zählt die Länge eines Tweets anhand der Normalization Form C (NFC) des Textes. Als Beispiel: das Wort „café“. Es gibt zwei Bytefolgen, die visuell gleich aussehen und sich gleich lesen, aber eine unterschiedliche Anzahl von Bytes verwenden:
café0x63 0x61 0x66 0xC3 0xA9Verwendung des Zeichens „é“, des „komponierten Zeichens“.
café0x63 0x61 0x66 0x65 0xCC 0x81Verwendung des kombinierenden diakritischen Zeichens, das das „e“ überlagert
Die Normalization Form C bevorzugt die Verwendung eines vollständig kombinierten Zeichens (0xC3 0xA9 aus dem Beispiel „café“) gegenüber der Langform (0x65 0xCC 0x81). X zählt die Anzahl der Codepoints im Text und nicht die UTF-8-Bytes. Das 0xC3 0xA9 aus dem Beispiel „café“ ist ein Codepoint (U+00E9), der in UTF-8 als zwei Bytes codiert ist, wohingegen 0x65 0xCC 0x81 zwei Codepoints sind, die als drei Bytes codiert werden.
I