Hoppa till innehåll

Unicode-block

Unicode delar sitt kodrum i namngivna block, var och en ett angränsat intervall reserverat för ett skript eller en familj av symboler. Att veta vilket block en karaktär bor i är vad som förvandlar ett mysterium — varför bröt den här klistringen, varför missar denna regex det — till en besvarbar fråga.

Blocknamnen är identifierare, inte beskrivningar: de används ordagrant i ett regex som \p{Block=Cyrillic} och i varje Unicode-datafil, så de förblir på engelska på alla språk. Vad som översätts är meningen bredvid dem.

Detta är ett kurerat urval snarare än alla ungefär 340 block — de som dyker upp när man arbetar med text. ASCII-tabellen täcker det första blocket i full detalj; denna sida börjar där den slutar.

Latin

5

Latin är spritt över flera block, vilket är varför att matcha det efter block aldrig helt fungerar.

IntervålBlockVad som är i detProv
U+0000–U+007FBasic LatinASCII, oförändrad: Latinska bokstäver, siffror, skiljetecken, styrkoderA z 0 ?
U+0080–U+00FFLatin-1 SupplementVästra europeiska accenter, plus £ § × ÷ och non-breaking spaceé ñ ü ×
U+0100–U+017FLatin Extended-ACentrala och östra europeiska accenter — č, ł, ő, șč ł ő š
U+0180–U+024FLatin Extended-BYtterligare bokstäver för afrikansk och fonetisk stavningƒ ǎ ȳ
U+1E00–U+1EFFLatin Extended AdditionalVietnamesiska och andra multi-akcentuerade latinska bokstäverạ ế ṛ

Kombinationsmärken och modifierare

4

Dessa fäster till tecknet före dem och har ingen bredd på egen hand.

IntervålBlockVad som är i detProv
U+0300–U+036FCombining Diacritical MarksAccenter applicerade på föregående karaktärDet andra, dekomponerade sättet att skriva é. Normalisera till NFC för att kollapsa det.◌́ ◌̈ ◌̌
U+02B0–U+02FFSpacing Modifier LettersSuperskript bokstäver och IPA stress och tonmarkerʰ ˈ ˚
U+FE00–U+FE0FVariation SelectorsOsynliga väljare som väljer text eller emoji-presentationVS16 är vad som förvandlar ✔ till en emoji. Osynlig, men den räknas.
U+FE20–U+FE2FCombining Half MarksHalvor av märken som spänner två tecken

Andra skript

8
IntervålBlockVad som är i detProv
U+0370–U+03FFGreek and CopticGrekiska, och de koptiska bokstäver som delar sitt blockα Ω π
U+0400–U+04FFCyrillicRyska, ukrainska, serbiska, bulgariska och relaterade alfabetд Я ж
U+0590–U+05FFHebrewHebreiska bokstäver, vokalpoäng och kantillationsmarkerא ש
U+0600–U+06FFArabicArabiska bokstäver, i deras isolerade formerا ب ي
U+0900–U+097FDevanagariHindi, Sanskrit, Marathi och relaterade språkक ह
U+0E00–U+0E7FThaiThailändska konsonanter, vokaler och tonmarkerก ท
U+10A0–U+10FFGeorgianGeorgisk Mkhedruliა ბ
U+1F00–U+1FFFGreek ExtendedPolytonisk grekiska — accenterna i klassiska texterᾰ ῶ

Skiljetecken och nummer

5

Källan till de flesta osynliga tecken som överlever en kopia-klistring.

IntervålBlockVad som är i detProv
U+2000–U+206FGeneral PunctuationBindestreck, lockiga citattecken, ellipsis — och de flesta osynliga mellanslagU+200B zero-width space och U+2060 word joiner bor här.– — “ ” …
U+2070–U+209FSuperscripts and SubscriptsSuperskript och subscript siffror och bokstäver⁰ ⁴ ₂
U+20A0–U+20CFCurrency SymbolsValutasignaler Latin-1 har ingen plats för — €, ₴, ₹, ₺€ ₴ ₺
U+2100–U+214FLetterlike SymbolsSymboler byggda från bokstäver — ™, №, ℃, ℓ™ ℃ №
U+2150–U+218FNumber FormsGemena bråk och romerska siffror som enskilda tecken⅓ ⅕ Ⅷ

Symboler och ritning

9
IntervålBlockVad som är i detProv
U+2190–U+21FFArrowsPilar i varje riktning, enkla och dubbla← ↔ ⇒
U+2200–U+22FFMathematical OperatorsMatematiska operatorer — ∀, ∑, ≠, ∞∀ ∑ ≠
U+2300–U+23FFMiscellaneous TechnicalTangentbords- och tekniska symboler — ⌘, ⌥, ⌫, ⏎⌘ ⌥ ⏎
U+2500–U+257FBox DrawingLinjer och hörn för terminala lådor och tabeller─ ┌ ╬
U+2580–U+259FBlock ElementsSolida och skuggade block, använd för terminal-bar-diagram█ ▓ ░
U+25A0–U+25FFGeometric ShapesRutor, cirklar, trianglar och diamanter■ ● ▲
U+2600–U+26FFMiscellaneous SymbolsVäder, astrologi, schack, kort och kortfärgerna☀ ★ ♥
U+2700–U+27BFDingbatsTryckares pynt — bockmarkeringar, sax, stjärnor✂ ✓ ➜
U+2800–U+28FFBraille PatternsAlla 256 Braille-punktmönster, använd för terminalgrafikk också⠁ ⣿

CJK och fullbredd

6

Helbreddsformer är egna tecken, inte ett typsnitt — de är skilda från sina ASCII-motsvarigheter.

IntervålBlockVad som är i detProv
U+3000–U+303FCJK Symbols and PunctuationIdeografiskt mellanslag och CJK-skiljeteckenU+3000 är ett helbredd-mellanslag och trimmases inte av de flesta vitspaceregler.  、 。
U+3040–U+309FHiraganaDen japanska stavelsen för ursprungliga ord och grammatikあ ん
U+30A0–U+30FFKatakanaDen japanska stavelsen för lånord och betoningア ン
U+4E00–U+9FFFCJK Unified IdeographsDet huvudsakliga Han-blocket — nästan 21 000 tecken som delas av kinesiska, japanska och koreanska日 本 語
U+AC00–U+D7AFHangul SyllablesAlla 11 172 förkomponerade koreanska stavelserVar och en kan också skrivas som separat Jamo, som normalisering förlikar.한 글
U+FF00–U+FFEFHalfwidth and Fullwidth FormsHelbredd kopior av ASCII och halvbredd KatakanaA är inte A. Text inklistrad från CJK-former behöver ofta vikas till ASCII.A ! ア

Över U+FFFF, och specialfallen

10

Allt här tar två UTF-16-enheter, vilket är där string-längdsbuggar kommer från.

IntervålBlockVad som är i detProv
U+D800–U+DB7FHigh SurrogatesFörsta hälften av ett UTF-16-par — aldrig giltigt på egen handEn ensamstehende surrogate är vad en sträng skuren genom en emoji lämnar bakom.
U+DC00–U+DFFFLow SurrogatesAndra hälften av ett UTF-16-par — aldrig giltigt på egen hand
U+E000–U+F8FFPrivate Use AreaOtilldelad genom design, för privata överenskommelserDär ikonfonter sätter sina glyfer. Meningslöst utan den matchande fonten.
U+FFF0–U+FFFFSpecialsErsättningstecknet och byte-ordermärkens relationerU+FFFD är vad du ser när en avkodare gav upp på en byte.
U+1D400–U+1D7FFMathematical Alphanumeric SymbolsFet, kursiv, skript och dubbelslag alfabet som teckenKällan till 𝐟𝐚𝐤𝐞 𝐛𝐨𝐥𝐝 i sociala medienamn. Osökbar.𝐀 𝓪 𝟙
U+1F300–U+1F5FFMiscellaneous Symbols and PictographsDe flesta icke-ansikts emoji — väder, föremål, platser, symboler🌍 🔥 📄
U+1F600–U+1F64FEmoticonsAnsikts-emoji😀 🙂
U+1F680–U+1F6FFTransport and Map SymbolsFordon, trafik och kartanvändarsymboler🚀 🛑
U+1F900–U+1F9FFSupplemental Symbols and PictographsSenare emoji-tillskott — senare ansikten, gester, föremål🤖 🧠
U+E0000–U+E007FTagsOsynliga taggtecken, använd i flaggsekvenserÄven vektorn för osynlig text som smugglats in i en normalt utseende sträng.

FAQ

Vad är skillnaden mellan ett block och ett skript?
Ett block är ett angränsat intervall av kodpunkter; ett skript är skriftsystemet en karaktär tillhör. De är inte desamma och är ofta oense — Latinska karaktärer är spridda över minst sju block, och Combining Diacritical Marks-blocket används av flera skript samtidigt. I regex är \p{Script=Latin} nästan alltid vad du vill, inte \p{Block=…}.
Varför har de ersättarraderna ingen exempeltecken?
För att en surrogate inte är en karaktär. U+D800–U+DFFF är reserverade som en parmekanism för UTF-16: två av dem tillsammans kodar en kodpunkt ovanför U+FFFF. På egen hand är de ogiltig text, vilket är exakt varför en sträng skuren mitt i en emoji producerar ersättningstecknet — du behöll hälften av ett par.
Varför räknas mitt accenttecken ibland som två?
För att det finns två sätt att skriva det. é kan vara en kodpunkt från Latin-1 Supplement, eller e följt av ett kombinationsacutetecken från Combining Diacritical Marks-blocket. De ser identiska ut och jämför som ojämlika. Normalisering till NFC kollapsar den andra formen till den första, och det är vad ett normaliseringsverktyg är till för.
Är en emoji ett tecken?
Sällan. En enda visad emoji är ofta flera kodpunkter — en bassymbol, hudtonsmodifierare, variationselektorer och nollbreddsfogar som binder en familj tillsammans. En längd på 1 är undantaget, inte regeln, och all kod som skär strängar efter index kommer så småningom att dela en.