Zum Inhalt springen

Unicode-Blöcke

Unicode teilt seinen Code-Raum in benannte Blöcke auf, jeweils ein zusammenhängender Bereich, der für eine Schrift oder eine Familie von Symbolen reserviert ist. Zu wissen, in welchem Block ein Zeichen lebt, verwandelt ein Mysterium – warum hat dieses Paste gebrochen, warum vermisst dieses Regex es – in eine beantwortbare Frage.

Die Block-Namen sind Bezeichner, keine Beschreibungen: Sie werden wörtlich in einem Regex als \p{Block=Cyrillic} und in jeder Unicode-Datendatei verwendet, also bleiben sie auf Englisch in jeder Sprache. Was übersetzt wird, ist der Satz neben ihnen.

Dies ist eine kuratierte Auswahl statt all der ungefähr 340 Blöcke – die, die entstehen, wenn du mit Text arbeitest. Die ASCII-Tabelle deckt den ersten Block vollständig ab; diese Seite beginnt, wo die endet.

Beispiel

5

Latein ist über mehrere Blöcke verteilt, weshalb die Zuordnung nach Block nie ganz funktioniert.

RangeBlockWas ist drinLatein ist über mehrere Blöcke verteilt, weshalb die Zuordnung nach Block nie ganz funktioniert.
U+0000–U+007FBasic LatinASCII, unverändert: Lateinische Buchstaben, Ziffern, Interpunktion, SteuercodesA z 0 ?
U+0080–U+00FFLatin-1 SupplementWesteuropäische Akzente, plus £ § × ÷ und das geschützte Leerzeichené ñ ü ×
U+0100–U+017FLatin Extended-AZentral- und Osteuropäische Akzente — č, ł, ő, șč ł ő š
U+0180–U+024FLatin Extended-BZusätzliche Buchstaben für afrikanische und phonetische Rechtschreibungenƒ ǎ ȳ
U+1E00–U+1EFFLatin Extended AdditionalVietnamesisch und andere Multi-Akzent-Lateinische Buchstabenạ ế ṛ

Kombinierende Zeichen und Modifizierer

4

Diese hängen an dem Zeichen davor an und haben keine Breite für sich selbst.

RangeBlockWas ist drinLatein ist über mehrere Blöcke verteilt, weshalb die Zuordnung nach Block nie ganz funktioniert.
U+0300–U+036FCombining Diacritical MarksAkzente angewendet auf das vorhergehende ZeichenDie zweite, zerlegte Weise, é zu schreiben. Normalisiere zu NFC, um sie zu brechen.◌́ ◌̈ ◌̌
U+02B0–U+02FFSpacing Modifier LettersHochgestellte Buchstaben und IPA-Stress und Tonmarkenʰ ˈ ˚
U+FE00–U+FE0FVariation SelectorsUnsichtbare Selektoren, die Text oder Emoji-Präsentation wählenVS16 ist, was ✔ in ein Emoji verwandelt. Unsichtbar, aber es zählt.
U+FE20–U+FE2FCombining Half MarksHälften von Zeichen, die sich über zwei Zeichen erstrecken

Weitere Schriftsysteme

8
RangeBlockWas ist drinLatein ist über mehrere Blöcke verteilt, weshalb die Zuordnung nach Block nie ganz funktioniert.
U+0370–U+03FFGreek and CopticGriechisch, und die Kopten-Buchstaben, die seinen Block teilenα Ω π
U+0400–U+04FFCyrillicRussisch, Ukrainisch, Serbisch, Bulgarisch und verwandte Alphabeteд Я ж
U+0590–U+05FFHebrewHebräische Buchstaben, Vokalzeichen und Gesangszeichenא ש
U+0600–U+06FFArabicArabische Buchstaben, in ihren isolierten Formenا ب ي
U+0900–U+097FDevanagariHindi, Sanskrit, Marathi und verwandte Sprachenक ह
U+0E00–U+0E7FThaiThailändische Konsonanten, Vokale und Tonmarkenก ท
U+10A0–U+10FFGeorgianGeorgisch Mkhedruliა ბ
U+1F00–U+1FFFGreek ExtendedPolytonisch Griechisch – die Akzente klassischer Texteᾰ ῶ

Andere Schriften

5

Die Quelle der meisten unsichtbaren Zeichen, die eine Copy-Paste überleben.

RangeBlockWas ist drinLatein ist über mehrere Blöcke verteilt, weshalb die Zuordnung nach Block nie ganz funktioniert.
U+2000–U+206FGeneral PunctuationBindestriche, lockige Anführungszeichen, Ellipsis – und die meisten unsichtbaren LeerzeichenU+200B Zero-Width-Raum und U+2060 Word-Joiner leben hier.– — “ ” …
U+2070–U+209FSuperscripts and SubscriptsHochgestellt und tiefgestellt Ziffern und Buchstaben⁰ ⁴ ₂
U+20A0–U+20CFCurrency SymbolsWährungssymbole, die Latin-1 keinen Platz für hat – €, ₴, ₹, ₺€ ₴ ₺
U+2100–U+214FLetterlike SymbolsSymbole aus Buchstaben gebaut – ™, №, ℃, ℓ™ ℃ №
U+2150–U+218FNumber FormsVulgäre Brüche und Römische Ziffern als einzelne Zeichen⅓ ⅕ Ⅷ

Interpunktion und Zahlen

9
RangeBlockWas ist drinLatein ist über mehrere Blöcke verteilt, weshalb die Zuordnung nach Block nie ganz funktioniert.
U+2190–U+21FFArrowsPfeile in jede Richtung, einzeln und doppelt← ↔ ⇒
U+2200–U+22FFMathematical OperatorsMathematische Operatoren – ∀, ∑, ≠, ∞∀ ∑ ≠
U+2300–U+23FFMiscellaneous TechnicalTastatur und technische Symbole – ⌘, ⌥, ⌫, ⏎⌘ ⌥ ⏎
U+2500–U+257FBox DrawingLinien und Ecken für Terminal-Boxen und Tabellen─ ┌ ╬
U+2580–U+259FBlock ElementsVollständig und schattierte Blöcke, verwendet für Terminal-Balkendiagramme█ ▓ ░
U+25A0–U+25FFGeometric ShapesQuadrate, Kreise, Dreiecke und Diamanten■ ● ▲
U+2600–U+26FFMiscellaneous SymbolsWetter, Astrologie, Schach, Karten und die Kartenschachteln☀ ★ ♥
U+2700–U+27BFDingbatsDrucker-Verzierungen – Häkchen, Schere, Sterne✂ ✓ ➜
U+2800–U+28FFBraille PatternsAlle 256 Braille-Punkt-Muster, verwendet für Terminal-Grafiken auch⠁ ⣿

Vollbreite-Formen sind separate Zeichen von ihren ASCII-Zwillingen, nicht eine Schriftart.

6

Die Quelle der meisten unsichtbaren Zeichen, die eine Copy-Paste überleben.

RangeBlockWas ist drinLatein ist über mehrere Blöcke verteilt, weshalb die Zuordnung nach Block nie ganz funktioniert.
U+3000–U+303FCJK Symbols and PunctuationIdeografisches Leerzeichen und CJK-InterpunktionU+3000 ist ein Vollbreite-Raum und wird nicht von den meisten Whitespace-Regeln getrimmt.  、 。
U+3040–U+309FHiraganaDas japanische Silbenzeichen für native Wörter und Grammatikあ ん
U+30A0–U+30FFKatakanaDas japanische Silbenzeichen für Lehnwörter und Betonungア ン
U+4E00–U+9FFFCJK Unified IdeographsDer Haupt-Han-Block – fast 21.000 Zeichen geteilt durch Chinesisch, Japanisch und Koreanisch日 本 語
U+AC00–U+D7AFHangul SyllablesAlle 11.172 vorgehängten koreanischen SilbenJede kann auch als separate Jamo geschrieben werden, die Normalisierung versöhnt.한 글
U+FF00–U+FFEFHalfwidth and Fullwidth FormsVollbreite Kopien von ASCII und Halbbreite KatakanaA ist nicht A. Text aus CJK-Formen eingeklebt braucht oft Falten zu ASCII.A ! ア

Über U+FFFF, und die besonderen Fälle

10

Alles hier nimmt zwei UTF-16-Einheiten, die ist, wo String-Längen-Bugs herkommen.

RangeBlockWas ist drinLatein ist über mehrere Blöcke verteilt, weshalb die Zuordnung nach Block nie ganz funktioniert.
U+D800–U+DB7FHigh SurrogatesErste Hälfte eines UTF-16-Paares – niemals allein gültigEin einsamer Surrogate ist, was ein String, der durch ein Emoji geschnitten wird, zurücklässt.
U+DC00–U+DFFFLow SurrogatesZweite Hälfte eines UTF-16-Paares – niemals allein gültig
U+E000–U+F8FFPrivate Use AreaAbsichtlich Unzugeordnet, für private VereinbarungenWo Icon-Schriftarten ihre Glyphen setzen. Bedeutungslos ohne die passende Schriftart.
U+FFF0–U+FFFFSpecialsDas Ersatz-Zeichen und die Byte-Ordnungszeichen-VerwandtenU+FFFD ist, was du siehst, wenn ein Decoder aufgab an einem Byte.
U+1D400–U+1D7FFMathematical Alphanumeric SymbolsFettgedruckt, kursiv, Schrift und Double-Struck-Alphabete als ZeichenDie Quelle von 𝐟𝐚𝐤𝐞 𝐛𝐨𝐥𝐝 in sozialen Medien Namen. Nicht durchsuchbar.𝐀 𝓪 𝟙
U+1F300–U+1F5FFMiscellaneous Symbols and PictographsDie meisten Nicht-Gesichts-Emoji – Wetter, Objekte, Orte, Symbole🌍 🔥 📄
U+1F600–U+1F64FEmoticonsDas Gesichts-Emoji😀 🙂
U+1F680–U+1F6FFTransport and Map SymbolsFahrzeuge, Verkehr und Karten-Symbole🚀 🛑
U+1F900–U+1F9FFSupplemental Symbols and PictographsSpätere Emoji-Ergänzungen – spätere Gesichter, Gesten, Objekte🤖 🧠
U+E0000–U+E007FTagsUnsichtbare Tag-Zeichen, verwendet in Flag-SequenzenAuch der Vektor für unsichtbaren Text, der in einen normalaussehenden String kontrebanders wird.

Häufige Fragen

Was ist der Unterschied zwischen einem Block und einer Schrift?
Ein Block ist ein zusammenhängender Bereich von Code-Punkten; eine Schrift ist das Schriftsystem, zu dem ein Zeichen gehört. Sie sind nicht gleich und stimmen oft nicht überein – lateinische Zeichen sind über mindestens sieben Blöcke verteilt, und der Combining Diacritical Marks Block wird von mehreren Schriften gleichzeitig verwendet. In Regex ist \p{Script=Latin} fast immer, was du willst, nicht \p{Block=…}.
Warum haben die Surrogate-Zeilen keine Beispielzeichen?
Weil ein Surrogate kein Zeichen ist. U+D800–U+DFFF sind als Paar-Mechanismus für UTF-16 reserviert: zwei davon zusammen kodieren einen Code-Punkt über U+FFFF. Allein sind sie ungültiger Text, was genau deshalb ist, warum ein String, der durch ein Emoji geschnitten wird, das Ersatzzeichen produziert – du hieltest eine Hälfte eines Paares fest.
Warum wird mein Akzentzeichen manchmal als zwei gezählt?
Weil es zwei Wege gibt, es zu schreiben. é kann ein Code-Punkt aus Latin-1 Supplement sein, oder e gefolgt von einem kombinierenden Akut-Akzent aus dem Combining Diacritical Marks Block. Sie sehen identisch aus und vergleichen ungleich. Normalisierung zu NFC bricht die zweite Form in die erste, und das ist wofür ein Normalisierungstool ist.
Ist ein Emoji ein Zeichen?
Selten. Ein einzelnes angezeigtes Emoji sind oft mehrere Code-Punkte – ein Basis-Symbol, Hautton-Modifizierer, Variations-Selektoren und Zero-Width-Joiner, die eine Familie binden. Eine Länge von 1 ist die Ausnahme, nicht die Regel, und jeder Code, der Strings nach Index teilt, wird schließlich einen splitten.