Sări la conținut

Blocuri Unicode

Unicode împarte spațiul său de cod în blocuri numite, fiecare un interval contiguu rezervat pentru o scriptură sau o familie de simboluri. Știind în ce bloc locuiește un caracter este ceea ce transformă o mister — de ce a rupt această lipire, de ce această regex nu o ratează — într-o întrebare cu răspuns.

Numele de bloc sunt identificatori, nu descrieri: sunt folosite literal într-o regex ca \p{Block=Cyrillic} și în fiecare fișier de date Unicode, deci rămân în engleză în fiecare limbă. Ceea ce este tradus este propoziția lângă ele.

Aceasta este o selecție curată mai degrabă decât toate din aproximativ 340 de blocuri — cele care ies la iveală atunci când lucrezi cu text. Tabelul ASCII acoperă blocul primul în detaliu complet; această pagină începe de unde se oprește acela.

Latin

5

Latin este răspândită peste mai multe blocuri, care este de ce potrivirea ei după bloc nu funcționează niciodată cu exactitate.

Versiunea HTTP din cerere nu este acceptată.RazăCe este în eaExemplu
U+0000–U+007FBasic LatinAccente din Europa Occidentală, plus £ § × ÷ și spațiu care nu se rupeA z 0 ?
U+0080–U+00FFLatin-1 SupplementAccente din Europa Occidentală, plus £ § × ÷ și spațiu care nu se rupeé ñ ü ×
U+0100–U+017FLatin Extended-AAccente din Europa Centrală și de Est — č, ł, ő, șč ł ő š
U+0180–U+024FLatin Extended-BAccente din Europa Centrală și Orientală — č, ł, ő, șƒ ǎ ȳ
U+1E00–U+1EFFLatin Extended AdditionalVietnamez și alte litere latine cu mai mulți accențiạ ế ṛ

Combinarea mărcilor și modificatorilor

4

Acestea se atașează caracterului din fața lor și nu au lățime proprie.

Versiunea HTTP din cerere nu este acceptată.RazăCe este în eaExemplu
U+0300–U+036FCombining Diacritical MarksAccente aplicate caracterului anteriorAl doilea, fel descompus de a scrie é. Normalizează la NFC pentru a o prăbuși.◌́ ◌̈ ◌̌
U+02B0–U+02FFSpacing Modifier LettersLitere supraindice și IPA stres și tonuriʰ ˈ ˚
U+FE00–U+FE0FVariation SelectorsLitere supraindice și IPA stres și tonuriVS16 este ceea ce transformă ✔ într-un emoji. Invizibil, dar contează.
U+FE20–U+FE2FCombining Half MarksJumătăți de mărci care se întind pe două caractere

Alte scripturi

8
Versiunea HTTP din cerere nu este acceptată.RazăCe este în eaExemplu
U+0370–U+03FFGreek and CopticGrec, și literele copte care-și împărtășesc bloculα Ω π
U+0400–U+04FFCyrillicRus, ucrainean, sârb, bulgăresc și alfabete conexeд Я ж
U+0590–U+05FFHebrewLitere ebraice, vocalele puncte și semne cantillationא ש
U+0600–U+06FFArabicLitere arabe, în formele lor izolateا ب ي
U+0900–U+097FDevanagariHindi, Sanscrit, Marathi și limbi conexeक ह
U+0E00–U+0E7FThaiConsoane thai, vocale și semne de tonก ท
U+10A0–U+10FFGeorgianGeorgian Mkhedruliა ბ
U+1F00–U+1FFFGreek ExtendedGrec politonic — accentele textelor clasiceᾰ ῶ

Punctuație și numere

5

Sursa majorității caracterelor invizibile care supraviețuiesc unui copy-paste.

Versiunea HTTP din cerere nu este acceptată.RazăCe este în eaExemplu
U+2000–U+206FGeneral PunctuationCratimă, ghilimele curly, elipsis — și mai mari invizibile spațiiU+200B spațiu lățime zero și U+2060 îmbinator de cuvinte trăiesc aici.– — “ ” …
U+2070–U+209FSuperscripts and SubscriptsU+200B spațiu lățime zero și U+2060 îmbinator de cuvinte trăiesc aici.⁰ ⁴ ₂
U+20A0–U+20CFCurrency SymbolsSemne de valută Latin-1 nu are loc pentru — €, ₴, ₹, ₺€ ₴ ₺
U+2100–U+214FLetterlike SymbolsSimboluri construite din litere — ™, №, ℃, ℓ™ ℃ №
U+2150–U+218FNumber FormsFracții obsce și numere romane ca caractere unice⅓ ⅕ Ⅷ

Simboluri și desen

9
Versiunea HTTP din cerere nu este acceptată.RazăCe este în eaExemplu
U+2190–U+21FFArrowsSăgeți în fiecare direcție, singular și dublu← ↔ ⇒
U+2200–U+22FFMathematical OperatorsOperatori matematici — ∀, ∑, ≠, ∞∀ ∑ ≠
U+2300–U+23FFMiscellaneous TechnicalTastă și simboluri tehnice — ⌘, ⌥, ⌫, ⏎⌘ ⌥ ⏎
U+2500–U+257FBox DrawingLinii și colțuri pentru casete terminale și tabele─ ┌ ╬
U+2580–U+259FBlock ElementsBlocuri solide și umbrite, folosite pentru grafice cu bare terminale█ ▓ ░
U+25A0–U+25FFGeometric ShapesPătrate, cercuri, triunghiuri și diamante■ ● ▲
U+2600–U+26FFMiscellaneous SymbolsVreme, astrologie, șah, cărți și costumele cărților☀ ★ ♥
U+2700–U+27BFDingbatsOrnamente tipografului — semne de control, foarfeci, stele✂ ✓ ➜
U+2800–U+28FFBraille PatternsToți 256 de modele de puncte Braille, folosite și pentru grafică terminală⠁ ⣿

CJK și plin lățime

6

Deasupra U+FFFF, și cazurile speciale

Versiunea HTTP din cerere nu este acceptată.RazăCe este în eaExemplu
U+3000–U+303FCJK Symbols and PunctuationSpațiu ideographic și CJK punctuațieU+3000 este un spațiu plin lățime și nu este tăiat de majoritatea regulilor spațiu alb.  、 。
U+3040–U+309FHiraganaU+3000 este un spațiu plin lățime și nu este tăiat de majoritatea regulilor spațiu alb.あ ん
U+30A0–U+30FFKatakanaSilabari japonez pentru cuvinte împrumutate și enfazăア ン
U+4E00–U+9FFFCJK Unified IdeographsBlocul principal Han — aproape 21.000 de caractere partajate de chinez, japonez și coreean日 本 語
U+AC00–U+D7AFHangul SyllablesToți 11.172 de silabare coreene precombinateFiecare poate fi și scris ca Jamo separat, pe care normalizarea o reconciliază.한 글
U+FF00–U+FFEFHalfwidth and Fullwidth FormsFiecare poate fi și scris ca Jamo separat, pe care normalizarea o reconciliază.A nu este A. Textul lipit din forme CJK adesea trebuie pliat la ASCII.A ! ア

Deasupra U+FFFF, și cazurile speciale

10

Orice de aici durează două unități UTF-16, care este de unde vin bug-urile de lungime șir.

Versiunea HTTP din cerere nu este acceptată.RazăCe este în eaExemplu
U+D800–U+DB7FHigh SurrogatesPrima jumătate a unei perechi UTF-16 — niciodată valabil pe cont propriuPrima jumătate a unei perechi UTF-16 — niciodată valabil pe cont propriu
U+DC00–U+DFFFLow SurrogatesA doua jumătate a unei perechi UTF-16 — niciodată valabil pe cont propriu
U+E000–U+F8FFPrivate Use AreaA doua jumătate a unei perechi UTF-16 — niciodată valabil pe cont propriuUnde iconite fonturile-și plasează glifele. Fără sens fără fontul potrivit.
U+FFF0–U+FFFFSpecialsCaracterul de înlocuire și rudele mărcii ordinii octetU+FFFD este ceea ce vezi când un decodificator a renunțat la un octet.
U+1D400–U+1D7FFMathematical Alphanumeric SymbolsU+FFFD este ceea ce vezi când un decodificator a renunțat la un octet.Majoritate non-față emoji — vreme, obiecte, locuri, simboluri𝐀 𝓪 𝟙
U+1F300–U+1F5FFMiscellaneous Symbols and PictographsMajoritate non-față emoji — vreme, obiecte, locuri, simboluri🌍 🔥 📄
U+1F600–U+1F64FEmoticonsFața emoji😀 🙂
U+1F680–U+1F6FFTransport and Map SymbolsAdăugări emoji mai târziu — fețe mai târziu, gesturi, obiecte🚀 🛑
U+1F900–U+1F9FFSupplemental Symbols and PictographsCaractere de etichetă invizibilă, folosite în secvențe de steag🤖 🧠
U+E0000–U+E007FTagsDe asemenea, vectorul pentru text invizibil contrabandată în interiorul unui șir care arată normal.De asemenea, vectorul pentru text invizibil contrabandată în interiorul unui șir care arată normal.

FAQ

Care este diferența dintre un bloc și o scriptură?
Un bloc este un interval contiguu de puncte de cod; o scriptură este sistemul de scriere căruia aparține un caracter. Nu sunt aceiași și adesea nu sunt de acord — caractere latine sunt răspândite peste cel puțin șapte blocuri, și blocul Combining Diacritical Marks este folosit de mai multe scripturi o dată. În regex, \p{Script=Latin} este aproape întotdeauna ceea ce vrei, nu \p{Block=…}.
De ce rândurile substitute nu au caractere de exemplu?
Deoarece un substitute nu este un caracter. U+D800–U+DFFF sunt rezervate ca mecanismul pereche pentru UTF-16: doi din ei laolaltă codifică un punct de cod deasupra U+FFFF. Pe cont propriu sunt text nevalid, care este exact de ce un șir tăiat în mijlocul unui emoji produce caracterul de înlocuire — ai păstrat jumătate dintr-o pereche.
De ce caracterul meu accentuat uneori contează ca doi?
Deoarece există două moduri de a o scrie. é poate fi un punct de cod din Latin-1 Supplement, sau e urmat de o marcă de accent agud din blocul Combining Diacritical Marks. Arată identic și compară ca inegal. Normalizarea la NFC prăbușește forma a doua în prima, și aceasta este ceea ce un instrument de normalizare face.
Este un emoji un caracter?
Rar. Un singur emoji afișat este adesea mai multe puncte de cod — un simbol de bază, modificatori de ton de piele, selectori de variație, și joni de lățime zero legând o familie laolaltă. O lungime de 1 este excepția, nu regula, și orice cod care feliază șirurile după index va împărți eventual o.