encyklopedia.space

Basic Multilingual Plane (BMP)

Basic Multilingual Plane, w skrócie BMP, jest pierwszym z 17 płaszczyzn (ang. planes) w standardzie Unicode. Zawiera on najstarsze i najbardziej powszechnie używane znaki, obejmując zakres kodowych punktów od U+0000 do U+FFFF. Dzięki temu BMP jest podstawą dla większości systemów operacyjnych, aplikacji i czcionek, które obsługują języki naturalne i niektóre znaki techniczne.

Historia

Standard Unicode został opracowany w latach 80. XX wieku w celu ujednolicenia reprezentacji tekstu w komputerach. Pierwsza wersja (Unicode 1.0) definiowała jedynie Basic Multilingual Plane, ponieważ na ten moment nie przewidywano potrzeby obsługi tysięcy dodatkowych znaków. W miarę rozwoju języków i rosnącego zapotrzebowania na symbole (np. znaków chińskich, japońskich, emoji) wprowadzono kolejne płaszczyzny: Supplementary Multilingual Plane (SMP), Supplementary Ideographic Plane (SIP) i Supplementary Special-purpose Plane (SSP).

Struktura i podziały

Zakres BMP (U+0000–U+FFFF) jest podzielony na bloki tematyczne, z których najważniejsze to:

Współpraca z kodowaniami znaków

W praktyce BMP jest wykorzystywany w najpopularniejszych kodowaniach tekstowych:

  • UTF‑8 – koduje punkt kodowy BMP w 1–3 bajtach, co zapewnia pełną kompatybilność z istniejącymi systemami opartymi na ASCII.
  • UTF‑16 – dla znaków BMP używa jednej 16‑bitowej jednostki (tzw. basic multilingual plane encoding), natomiast znaki spoza BMP wymagają pary surrogate (D800–DBFF i DC00–DFFF).
  • UTF‑32 – reprezentuje każdy punkt kodowy, w tym BMP, jako stałą 32‑bitową wartość.

Znaki zastępcze (surrogaty)

Choć BMP sam w sobie nie wymaga użycia surrogatów, ich istnienie jest niezbędne w UTF‑16 do kodowania punktów znajdujących się poza zakresem U+0000–U+FFFF. Dla programistów oznacza to, że przy przetwarzaniu łańcuchów znaków należy uwzględniać możliwość wystąpienia podwójnych jednostek kodowych, co wpływa na operacje takie jak liczenie znaków, wycinanie podciągów czy sortowanie.

Znaczenie w praktyce

Większość języków programowania i bibliotek standardowych (np. C++, Java, Python) przyjmują domyślną implementację opartej na BMP, dzięki czemu:

  • bezproblemowo można wyświetlać i przetwarzać teksty w językach zachodnich, wschodnio‑azjatyckich i wielu innych;
  • pliki tekstowe w formacie .txt, .html czy .xml mogą być zapisane w UTF‑8 i w pełni wykorzystać zakres BMP;
  • systemy operacyjne (np. Microsoft Windows, Linux, macOS) przechowują nazwy plików i interfejsy graficzne przy pomocy znaków BMP.

Ograniczenia i perspektywy

Mimo że BMP zawiera ponad 65 000 punktów kodowych, nie obejmuje on wszystkich znaków potrzebnych współczesnemu społeczeństwu. Wzrost popularności emoji, znaków historycznych oraz rosnącej liczby języków nieobsługiwanych dotychczas wymusił ekspansję do dodatkowych płaszczyzn (SMP, SIP, SSP). W praktyce jednak BMP pozostaje najczęściej wykorzystywaną częścią Unicode, zwłaszcza w systemach o ograniczonych zasobach pamięciowych oraz w aplikacjach, które nie potrzebują pełnego zakresu znaków.

Powiązane pojęcia