Przejdź do treści

Bloki Unicode

Unicode dzieli swoją przestrzeń kodową na nazwane bloki, każdy z ciągłym zakresem zarezerwowanym dla jednego skryptu lub jednej rodziny symboli. Wiedza, w jakim bloku żyje znak, zamienia tajemnicę — dlaczego ta wklejka się złamała, dlaczego ta regex to pominęła — w pytanie, które można odpowiedzieć.

Nazwy bloków są identyfikatorami, nie opisami: są używane dosłownie w regex jako \p{Block=Cyrillic} i w każdym pliku danych Unicode, więc pozostają w angielskim w każdym języku. To, co jest tłumaczone, to zdanie obok nich.

To wyselekcjonowany wybór, a nie wszystkie z około 340 bloków — te, które pojawiają się podczas pracy z tekstem. Tabela ASCII obejmuje pierwszy blok w pełnych szczegółach; ta strona zaczyna się od miejsca, w którym ta się kończy.

Łacina

5

Łacina jest rozrzucona na kilka bloków, dlatego dopasowanie jej przez blok nigdy nie działa całkowicie.

ZasięgBlokCo jest w tymPróbka
U+0000–U+007FBasic LatinASCII, bez zmian: łacińskie litery, cyfry, interpunkcja, kody sterowaniaA z 0 ?
U+0080–U+00FFLatin-1 SupplementZachodnie europejskie akcenty, plus £ § × ÷ i spacja nierdzennaé ñ ü ×
U+0100–U+017FLatin Extended-AAkcenty europejskie centralne i wschodnie — č, ł, ő, șč ł ő š
U+0180–U+024FLatin Extended-BDodatkowe litery dla afrikanów i fonetycznych ortografiiƒ ǎ ȳ
U+1E00–U+1EFFLatin Extended AdditionalWietnamski i inne wieloakcentowe litery łacińskieạ ế ṛ

Znaki kombinujące i modyfikatory

4

Załączają się do znaku przed nimi i nie mają szerokości.

ZasięgBlokCo jest w tymPróbka
U+0300–U+036FCombining Diacritical MarksAkcenty zastosowane do poprzedniego znakuDrugi, rozłożony sposób pisania é. Normalizuj do NFC, aby go zawalić.◌́ ◌̈ ◌̌
U+02B0–U+02FFSpacing Modifier LettersSuperskryptowe litery i znaki stresu i tonu IPAʰ ˈ ˚
U+FE00–U+FE0FVariation SelectorsNiewidoczne selektory wybierające tekst lub prezentację emojiVS16 to co zamienia ✔ na emoji. Niewidoczne, ale się liczy.
U+FE20–U+FE2FCombining Half MarksPołówki znaków rozciągających się na dwa znaki

Inne skrypty

8
ZasięgBlokCo jest w tymPróbka
U+0370–U+03FFGreek and CopticGrecki i litery koptyjskie, które dzielą jego blokα Ω π
U+0400–U+04FFCyrillicRosyjski, ukraiński, serbski, bułgarski i pokrewne alfabetyд Я ж
U+0590–U+05FFHebrewLitery hebrajskie, punkty samogłoskowe i znaki kantylacjiא ש
U+0600–U+06FFArabicLitery arabskie, w ich izolowanych formachا ب ي
U+0900–U+097FDevanagariHindi, Sanskryt, Marathi i powiązane językiक ह
U+0E00–U+0E7FThaiSpółgłoski tajskie, samogłoski i znaki tonówก ท
U+10A0–U+10FFGeorgianGeorgian Mkhedruliა ბ
U+1F00–U+1FFFGreek ExtendedGreka polytonic — akcenty tekstów klasycznychᾰ ῶ

Interpunkcja i liczby

5

Źródło większości niewidocznych znaków, które przetrwają wklejenie.

ZasięgBlokCo jest w tymPróbka
U+2000–U+206FGeneral PunctuationMyślniki, kręcone cytaty, wielokropek — i większość niewidocznych spacjiU+200B zero-width space i U+2060 word joiner żyją tutaj.– — “ ” …
U+2070–U+209FSuperscripts and SubscriptsSuperskryptowe i subskryptowe cyfry i litery⁰ ⁴ ₂
U+20A0–U+20CFCurrency SymbolsZnaki waluty, które łacina-1 nie ma miejsca — €, ₴, ₹, ₺€ ₴ ₺
U+2100–U+214FLetterlike SymbolsSymbole zbudowane z liter — ™, №, ℃, ℓ™ ℃ №
U+2150–U+218FNumber FormsWulgarne frakcje i numery rzymskie jako pojedyncze znaki⅓ ⅕ Ⅷ

Symbole i rysowanie

9
ZasięgBlokCo jest w tymPróbka
U+2190–U+21FFArrowsStrzałki w każdym kierunku, jednotnie i dwojnie← ↔ ⇒
U+2200–U+22FFMathematical OperatorsOperatory matematyczne — ∀, ∑, ≠, ∞∀ ∑ ≠
U+2300–U+23FFMiscellaneous TechnicalZnaki klawiatury i techniki — ⌘, ⌥, ⌫, ⏎⌘ ⌥ ⏎
U+2500–U+257FBox DrawingLinie i narożniki dla pudełek terminalowych i tabel─ ┌ ╬
U+2580–U+259FBlock ElementsPełne i zacienione bloki, używane dla wykresów słupkowych terminalu█ ▓ ░
U+25A0–U+25FFGeometric ShapesKwadraty, koła, trójkąty i diamenty■ ● ▲
U+2600–U+26FFMiscellaneous SymbolsPogoda, astrologia, szachy, karty i kolory kart☀ ★ ♥
U+2700–U+27BFDingbatsOrnament drukarza — kleszcze, nożyczki, gwiazdy✂ ✓ ➜
U+2800–U+28FFBraille PatternsWszystkie 256 wzorów kropek Braille'a, również dla grafiki terminalowej⠁ ⣿

CJK i pełna szerokość

6

Formy pełne szerokości są oddzielne od ich bliźniaków ASCII, a nie czcionką.

ZasięgBlokCo jest w tymPróbka
U+3000–U+303FCJK Symbols and PunctuationIdeograficzna spacja i interpunkcja CJKU+3000 to spacja pełne szerokości i nie jest przycinana przez większość reguł białych znaków.  、 。
U+3040–U+309FHiraganaJapoński sylabariusz do słów rodzimych i gramatykiあ ん
U+30A0–U+30FFKatakanaJapoński sylabariusz dla pożyczek i naciskuア ン
U+4E00–U+9FFFCJK Unified IdeographsGłówny blok Han — prawie 21 000 znaków wspólnych dla chińskiego, japońskiego i koreańskiego日 本 語
U+AC00–U+D7AFHangul SyllablesWszystkie 11 172 wstępnie skomponowane koreańskie sylabyKażdy może być również napisany jako osobne Jamo, które normalizacja pogodzij.한 글
U+FF00–U+FFEFHalfwidth and Fullwidth FormsPełne szerokości kopie ASCII i pół-szerokości KatakanaA to nie A. Tekst wklejony z formularzy CJK często wymaga składania do ASCII.A ! ア

Powyżej U+FFFF i specjalne przypadki

10

Cokolwiek tutaj trwa dwie jednostki UTF-16, co jest skąd pochodzą błędy długości łańcucha.

ZasięgBlokCo jest w tymPróbka
U+D800–U+DB7FHigh SurrogatesPierwsza połowa pary UTF-16 — nigdy nie jest prawidłowa samaSamotny zastępczy to to, co string cięty przez emoji pozostawia.
U+DC00–U+DFFFLow SurrogatesDruga połowa pary UTF-16 — nigdy nie jest prawidłowa sama
U+E000–U+F8FFPrivate Use AreaNieprzydzielony przez projekt, do prywatnych umówGdzie czcionki ikon umieszczają glifoidy. Bezznaczeniowy bez pasującej czcionki.
U+FFF0–U+FFFFSpecialsZnak zamiennika i krewni znaku porządku bajtówU+FFFD to to, co widzisz, gdy dekoder się poddał.
U+1D400–U+1D7FFMathematical Alphanumeric SymbolsPogrubienie, kursywa, skrypt i alfabety podwójnie uderzane jako znakiŹródło 𝐟𝐚𝐤𝐞 𝐛𝐨𝐥𝐝 w nazwach mediów społecznych. Niezaspokajający.𝐀 𝓪 𝟙
U+1F300–U+1F5FFMiscellaneous Symbols and PictographsWiększość nie-twarz emoji — pogoda, obiekty, miejsca, symbole🌍 🔥 📄
U+1F600–U+1F64FEmoticonsEmoji twarzy😀 🙂
U+1F680–U+1F6FFTransport and Map SymbolsPojazdy, ruch i symbole mapy🚀 🛑
U+1F900–U+1F9FFSupplemental Symbols and PictographsPóźniejsze dodatki emoji — później twarze, gesty, obiekty🤖 🧠
U+E0000–U+E007FTagsNiewidoczne znaki znaczników, używane w sekwencjach flagRównież wektor dla niewidocznego tekstu przemycić wewnątrz zwykłego wyglądającego łańcucha.

Częste pytania

Jaka jest różnica między blokiem a skryptem?
Blok to ciągły zakres punktów kodu; skrypt to system pisma, do którego należy znak. Nie są to to samo i często się nie zgadzają — znaki łacińskie są rozsiane na co najmniej siedem bloków, i blok Combining Diacritical Marks jest używany przez kilka skryptów jednocześnie. W regex \p{Script=Latin} to prawie zawsze to, czego chcesz, nie \p{Block=…}.
Dlaczego wiersze zastępcze nie mają znaków próbki?
Ponieważ zastępcze nie jest znakiem. U+D800–U+DFFF są zarezerwowane jako mechanizm pary dla UTF-16: dwa z nich razem kodują jeden punkt kodu powyżej U+FFFF. Same są nieprawidłowym tekstem, co jest dokładnie dlatego, że łańcuch cięty w środku emoji produkuje znak zamiennika — trzymałeś połowę pary.
Dlaczego mój akcent znakowy czasami liczy się jako dwa?
Ponieważ istnieją dwa sposoby, aby go napisać. é może być jednym punktem kodu z Latin-1 Supplement, lub e poprzedzony kombinacyjnym ostrym akcentem z bloku Combining Diacritical Marks. Wyglądają identycznie i porównują się jako nierówne. Normalizacja do NFC zsuwa drugą formę w pierwszą, i to jest do czego narzędzie normalizacji jest.
Czy emoji to jeden znak?
Rzadko. Jedno wyświetlane emoji to często wiele punktów kodu — symbol bazowy, modyfikatory tonu skóry, selektory wariacji i spajniki o zerowej szerokości łączące rodzinę razem. Długość 1 jest wyjątkiem, a nie regułą, a każdy kod, który dzieli łańcuchy przez indeks, ostatecznie podzieli jeden.