Ga naar inhoud

Blokken Unicode

Unicode verdeelt zijn codespace in benoemde blokken, elk een aaneengesloten bereik gereserveerd voor één script of één familie van symbolen. Weten welk blok een teken in leeft, verandert een mysterie — waarom brak deze plakactie, waarom mist deze regex het — in een beantwoordbare vraag.

De bloknamen zijn identifiers, geen beschrijvingen: zij worden letterlijk gebruikt in een regex als \p{Block=Cyrillic} en in elk Unicode-databestand, dus ze blijven in het Engels in elke taal. Wat wordt vertaald, is de zin ernaast.

Dit is een gemaakte selectie in plaats van alle ongeveer 340 blokken — de blokken die opduiken bij het werken met tekst. De ASCII-tabel dekt het eerste blok volledig in detail; deze pagina begint waar die stopt.

Latijn

5

Latijn is verspreid over verschillende blokken, daarom werkt het matchen ervan per blok nooit helemaal.

BereikBlokWat zit erinVoorbeeld
U+0000–U+007FBasic LatinASCII, onveranderd: Latijnse letters, cijfers, interpunctie, controle codesA z 0 ?
U+0080–U+00FFLatin-1 SupplementWesteuropese accenten, plus £ § × ÷ en de onbrekbare spatieé ñ ü ×
U+0100–U+017FLatin Extended-ACentraal- en Oost-Europese accenten — č, ł, ő, șč ł ő š
U+0180–U+024FLatin Extended-BExtra letters voor Afrikaanse en fonetische orthografieënƒ ǎ ȳ
U+1E00–U+1EFFLatin Extended AdditionalVietnamees en ander multi-geaccentueerd Latijn lettersạ ế ṛ

Combinatietekens en modificators

4

Deze hechten aan het teken ervoor en hebben geen breedte.

BereikBlokWat zit erinVoorbeeld
U+0300–U+036FCombining Diacritical MarksAccenten toegepast op het voorgaande tekenDe tweede, ontlede manier om é te schrijven. Normaliseer naar NFC om het in te storten.◌́ ◌̈ ◌̌
U+02B0–U+02FFSpacing Modifier LettersSuperscript-letters en IPA-stress en toonmarkeringenʰ ˈ ˚
U+FE00–U+FE0FVariation SelectorsOnzichtbare kiezers die tekst of emoji-presentatie kiezen.VS16 is wat ✔ in een emoji verandert. Onzichtbaar, maar het telt.
U+FE20–U+FE2FCombining Half MarksHelften van markeringen die twee teken omvatten

Andere scripts

8
BereikBlokWat zit erinVoorbeeld
U+0370–U+03FFGreek and CopticGrieks, en de Koptische letters die zijn blok delenα Ω π
U+0400–U+04FFCyrillicRussisch, Oekraïens, Servisch, Bulgaars en verwante alfabettenд Я ж
U+0590–U+05FFHebrewHebreeuwse letters, klinktekens en kantillatie-markeringenא ש
U+0600–U+06FFArabicArabische letters, in hun geïsoleerde vormenا ب ي
U+0900–U+097FDevanagariHindi, Sanskrit, Marathi en verwante talenक ह
U+0E00–U+0E7FThaiThaise medeklinkers, klinken en toonmarkeringenก ท
U+10A0–U+10FFGeorgianGeorgische Mkhedruliა ბ
U+1F00–U+1FFFGreek ExtendedPolytonic Grieks — de accenten van klassieke tekstenᾰ ῶ

De bron van de meeste onzichtbare teken die een copy-paste overleven.

5

De bron van de meeste onzichtbare teken die een copy-paste overleven.

BereikBlokWat zit erinVoorbeeld
U+2000–U+206FGeneral PunctuationDashes, krulhaken, ellipsis — en de meeste onzichtbare spaties.U+200B zero-width space en U+2060 word joiner wonen hier.– — “ ” …
U+2070–U+209FSuperscripts and SubscriptsSuperscript en subscript cijfers en letters⁰ ⁴ ₂
U+20A0–U+20CFCurrency SymbolsValutastekens Latijn-1 heeft geen ruimte voor — €, ₴, ₹, ₺€ ₴ ₺
U+2100–U+214FLetterlike SymbolsSymbolen gebouwd uit letters — ™, №, ℃, ℓ™ ℃ №
U+2150–U+218FNumber FormsVulgaire breuken en Romeinse cijfers als aparte teken⅓ ⅕ Ⅷ

CJK en volledig breed

9
BereikBlokWat zit erinVoorbeeld
U+2190–U+21FFArrowsPijlen in elke richting, enkel en dubbel← ↔ ⇒
U+2200–U+22FFMathematical OperatorsWiskundige operatoren — ∀, ∑, ≠, ∞∀ ∑ ≠
U+2300–U+23FFMiscellaneous TechnicalToetsenbord en technische symbolen — ⌘, ⌥, ⌫, ⏎⌘ ⌥ ⏎
U+2500–U+257FBox DrawingLijnen en hoeken voor terminaalboxen en tabellen─ ┌ ╬
U+2580–U+259FBlock ElementsVolledige en gearceerde blokken, gebruikt voor terminal staafdiagrammen.█ ▓ ░
U+25A0–U+25FFGeometric ShapesVierkanten, cirkels, driehoeken en diamanten■ ● ▲
U+2600–U+26FFMiscellaneous SymbolsWeer, astrologie, schaken, kaarten en de kaartpakken.☀ ★ ♥
U+2700–U+27BFDingbatsDrukker's versieringen — vinkjes, scharen, sterren.✂ ✓ ➜
U+2800–U+28FFBraille PatternsAlle 256 Braille-puntpatronen, ook gebruikt voor terminalafbeeldingen.⠁ ⣿

CJK en volledige breedte

6

Volledig breed formulieren zijn aparte teken van hun ASCII-tweelingen, geen lettertype.

BereikBlokWat zit erinVoorbeeld
U+3000–U+303FCJK Symbols and PunctuationIdeografische spatie en CJK-interpunctie.U+3000 is een volledig-brede spatie en wordt niet bijgesneden door de meeste witruimteregels.  、 。
U+3040–U+309FHiraganaDe Japanse lettergreepmarkt voor inheemse woorden en grammatica.あ ん
U+30A0–U+30FFKatakanaDe Japanse lettergreepmarkt voor leenwoorden en nadruk.ア ン
U+4E00–U+9FFFCJK Unified IdeographsHet belangrijkste Han-blok — bijna 21.000 teken gedeeld door Chinees, Japans en Koreaans.日 本 語
U+AC00–U+D7AFHangul SyllablesAlle 11.172 voorgebouwde Koreaanse lettergrepen.Elk kan ook als aparte Jamo worden geschreven, wat normalisatie verzoent.한 글
U+FF00–U+FFEFHalfwidth and Fullwidth FormsVolledig-brede kopieën van ASCII, en half-brede Katakana.A is niet A. Tekst geplakt uit CJK-formulieren moet vaak naar ASCII worden gevouwen.A ! ア

Boven U+FFFF, en de speciale gevallen

10

Alles hier vergt twee UTF-16-eenheden, wat waar string-length bugs vandaan komen.

BereikBlokWat zit erinVoorbeeld
U+D800–U+DB7FHigh SurrogatesEerste helft van een UTF-16-paar — nooit geldig op zichzelf.Een lone surrogate is wat een tekenreeks door een emoji snijdt achter.
U+DC00–U+DFFFLow SurrogatesTweede helft van een UTF-16-paar — nooit geldig op zichzelf.
U+E000–U+F8FFPrivate Use AreaNiet toegewezen per ontwerp, voor persoonlijke afspraken.Waar pictogrammen hun gliefen plaatsen. Zinloos zonder het bijpassende lettertype.
U+FFF0–U+FFFFSpecialsHet vervangingsteken en de byte-order-markeringen verwanten.U+FFFD is wat je ziet wanneer een decoder het gaf op een byte.
U+1D400–U+1D7FFMathematical Alphanumeric SymbolsVet, cursief, script en dubbel-slag alfabetten als teken.De bron van 𝐟𝐚𝐤𝐞 𝐛𝐨𝐥𝐝 in sociaalemediumnamen. Niet doorzoekbaar.𝐀 𝓪 𝟙
U+1F300–U+1F5FFMiscellaneous Symbols and PictographsMeeste niet-gezicht emoji — weer, objecten, plaatsen, symbolen.🌍 🔥 📄
U+1F600–U+1F64FEmoticonsDe gezicht emoji.😀 🙂
U+1F680–U+1F6FFTransport and Map SymbolsVoertuigen, verkeer en kaartsymbolen.🚀 🛑
U+1F900–U+1F9FFSupplemental Symbols and PictographsLatere emoji-toevoegingen — latere gezichten, gebaren, objecten.🤖 🧠
U+E0000–U+E007FTagsOnzichtbare tag-teken, gebruikt in vlagsequenties.Ook de vector voor onzichtbare tekst die in een normaal uitzien string is verborgen.

FAQ

Wat is het verschil tussen een blok en een script?
Een blok is een aaneengesloten bereik van code points; een script is het schrijfsysteem waartoe een teken behoort. Ze zijn niet hetzelfde en zijn het vaak oneens — Latijnse tekens zijn verspreid over minstens zeven blokken, en het blok Combining Diacritical Marks wordt door verschillende scripts tegelijk gebruikt. In regex is \p{Script=Latin} bijna altijd wat je wilt, niet \p{Block=…}.
Waarom hebben de vervangingsrijen geen voorbeeldtekens?
Omdat een vervanger geen teken is. U+D800–U+DFFF zijn gereserveerd als een paarmechanisme voor UTF-16: twee ervan samen coderen één code point boven U+FFFF. Op zichzelf zijn ze ongeldige tekst, wat precies waarom een tekenreeks in het midden van een emoji snijdt, de vervangingsteken oplevert — je hield half een paar vast.
Waarom telt mijn geaccentueerde teken soms als twee?
Omdat er twee manieren zijn om het te schrijven. é kan één code point uit Latin-1 Supplement zijn, of e gevolgd door een combinerend acuut accent uit het blok Combining Diacritical Marks. Ze zien er identiek uit en vergelijken als ongelijk. Normalisatie naar NFC ineenstorting de tweede vorm in de eerste, en dat is wat een normalisatie-gereedschap is voor.
Is een emoji één teken?
Zelden. Een enkele weergegeven emoji bestaat vaak uit meerdere code points — een basissymbool, teintmodificators, variatiekiezers, en nul-breedte samenvoegers die een familie bij elkaar binden. Een lengte van 1 is de uitzondering, niet de regel, en elke code die tekenreeksen op index snijdt, zal er uiteindelijk een splitsen.