Za chwilę koniec roku! Postanowiłem zakończyć go tematem kodowania Unicode, który jest pochodną ASCII, od którego zaczynałem swoją przygodę z pisaniem tekstów na blogu. 

Fajnie się składa, bo w moim życiu pewne aspekty zawodowe zataczają mniejsze bądź większe koła. W przypadku kodowania znaków też tak jest. Rozpoczęcie i zakończenie. Motywów tego typu będzie się z czasem pojawiać jeszcze więcej i będę je skrupulatnie notował i o nich wspominał.

Wracając jednak do tematu artykułu, pochylę się nad następującymi zagadnieniami:

  • Czym jest Unicode?
  • Ile razy standard został uaktualniony?
  • Jak dużo znaków koduje Unicode?
  • Co ma wspólnego ASCII i Unicode?
  • Gdzie w tym wszystkim miejsce na emotikonki?
  • Jak nazywane są litery polskiego alfabetu i do jakiej grupy należą?

Jak widać, pytań jest sporo i zachęcam do zgłębienia każdego z nich dokładnie. Ta wiedza nie pójdzie na marne.

Zaczynamy!

Wprowadzenie

Jak świat długi i szeroki tak, ilość urządzeń elektronicznych rosła z roku na rok. Następstwem ekspansji było powstanie problemu reprezentacji tekstu. Z tego właśnie powodu powstał Unicode, któremu twórcy postawili trzy główne cele:

  • odpowiadający potrzebom języków świata — uniwersalny

  • kody o stałej szerokości bitów dla łatwiejszej konwersji — jednolity

  • sekwencja bitów tylko jednemu znakowi — unikalny

Te trzy aspekty sprawiły, że dziś Unicode jest dostępny na wszystkich systemach, od Windowsa po iOS i na Linux kończąc. Na chwilę obecną jest na tyle uniwersalnym standardem kodowania znaków, że obejmuje języki Ameryki, Europy, Afryki, Indii, Azji i języki pacyficzne, ale również inne symbole historyczne czy techniczne. Unicode jest zsynchronizowany ze standardem UCS i każdy znak jest w jednym oraz drugim standardzie tak samo reprezentowany.

Historia 

Za standardem stoi konsorcjum Unicode z siedzibą w Kalifornii założone 3 stycznia 1991 przez trzech inżynierów oprogramowania — Marka Davisa (prezes zarządu), Lee Collinsa (wiceprezes techniczny) oraz Joe Beckera (wiceprezes techniczny). Każdy z tych trzech Panów pracował albo w Apple, albo w Xerox. Dlatego mówi się, że to te dwie firmy są współtwórcami standardu. Nie jest to jednak prawdą, bo w zarządzie konsorcjum było wiele osób z różnych firm. 

Pierwszymi członkami zarządu Unicode (oprócz trzech wyżej wspomnianych) byli:

  • Larry Tesler z firmy Apple. Pełnił funkcję wiceprezesa do spraw produktów zaawansowanych
  • Robert Carr z firmy GO. Pełnił funkcję wiceprezesa do spraw rozwoju oprogramowania
  • Richard Holleman z firmy IBM. Pełnił funkcję dyrektora do spraw telekomunikacji
  • Charles Irby z firmy Metaphor Computer Systems. Pełnił funkcję wiceprezesa do spraw rozwoju
  • Paul Maritz z firmy Microsoft. Pełnił funkcję wiceprezesa do spraw zaawansowanych systemów operacyjnych
  • Bud Tribble z firmy NeXT. Pełnił funkcję wiceprezes do spraw inżynierii oprogramowania
  • Jay Israel z firmy Novell. Pełnił funkcję wiceprezesa do spraw zaawansowanych technologii
  • David Richards z firmy The Research Libraries Group. Pełnił funkcję dyrektora do spraw rozwoju
  • John Gage z firmy Sun Microsystems. Pełnił funkcję wiceprezesa do spraw rozwoju komputerów stacjonarnych

Prace rozpoczęto w roku 1988 i po trzech latach miała miejsce premiera. Unicode w wersji 1.0.0 pojawił się w październiku 1991 roku.

Wersje

Unicode ma dość bogatą historię, jeżeli chodzi o wydawanie nowych wersji standardu. Łącznie do tej pory było ich ponad trzydzieści, z czego 24 oficjalnie.

Pełna historia rozwoju standardu zaprezentowana jest w tabeli poniżej.

Wszystkie oficjalne wydania nowych wersji Unicode
Rysunek 1. Wszystkie oficjalne wydania nowych wersji Unicode

Warto zwrócić uwagę na lukę między rokiem 93 a 96. Wtedy też miało miejsce powstanie standardu w wersji 1.1.5 w lipcu 1995 roku. Komitet Techniczny Unicode nie zatwierdził ostatecznie tej wersji. Każda z wersji ma pełną dokumentację z bardzo dobrym opisem znaków. Więcej pod adresem https://www.unicode.org/versions/

Polskie znaki

Skoro pojawił się temat Unicode, to nie może zabraknąć naszych rodzimych znaków. Mamy ich łącznie 18. Dziewięć dużych liter (ŻŹŁÓĄĘĆŃŚ) oraz dziewięć małych (żźłóąćńś). Pojawiły się one w Unicode w roku 1993 w grupie z rodziny łacińskich. Kreska nad literą nazywana jest „ostrą„. Natomiast kreska przy literze Ł nazywana jest „skokiem” lub „obrysem„. Stąd też dla przykładu definicja litery Ś w Unicode to „Łacińska litera S z ostrą” a Ł to „Łacińska litera L ze skokiem„.

Poniżej tabela z polskimi znakami.

Tabela z literami polskiego alfabetu zapisane hexadecymalnie, dziesiętnie oraz w Unicode.
Rysuunek 2. Litery polskiego alfabetu zapisane hexadecymalnie, dziesiętnie oraz w Unicode.

Czy wiesz, że…

Jednym z podstawowych pytań, które możesz sobie zadać, czytając ten artykuł, jest pytanie o ilość. Ile tak naprawdę znaków na chwilę obecną koduje Unicode?

Wystarczy dokładnie przeanalizować Rysunek 1. Jeżeli tego nie uczyniłeś/aś to Ci podpowiem!  Według źródeł i informacji z ostatniego oficjalnego wdrożenia, czyli maja 2019 znaków tych jest dokładnie 137994. Oczywiście osoby odpowiedzialne za Unicode twierdzą, że liczba ta nie jest skończona i pracują nad kolejną wersją z nowo powstającymi znakami. 

Skoro wiemy już, jak wygląda aktualna liczba, to dopowiem tylko, że w pierwszej wersji kodowania było to raptem 7161 znaków. 

Wśród tych ponad 135 tys. są też wszystkim znane… emoji. W konsorcjum Unicode istnieje specjalny podkomitet zajmujący się tylko emotikonami! Same emotikony powstały w Japonii i wdrożone zostały w 6 wersji standardu Unicode w roku 2010. Popularność zyskały dzięki Social Media. Cały czas jednak nie we wszystkich miejscach działają poprawnie. Wyświetlają się w różny sposób w zależności od medium, w którym chcemy takiej emotki użyć. Kilka przykładowych w tabeli poniżej.

Tabela z czarno-białymi emotikonami.
Rysunek 3. Czarno-białe emotikonki.

UCS

Wcześniej we wstępie wspomniałem, że UCS, jak i Unicode mają identyczny zbiór znaków. UCS jest zresztą widoczny w dwóch formach podczas kodowania w takich edytorach tekstu jak Notepade++. Tryby te to Big Endian oraz Little Endian. Różnią się one kolejnością bitów. 

  • Big Endian to forma zapisu danych, gdzie najbardziej znaczący bit występuje na początku. Dla ludzi z naszej części świata jest to bardziej oczywisty zapis, ponieważ my jako europejczycy piszemy od lewej do prawej. Przykładowe formaty, które tak zapisują dane to JPEG, MacPaint czy Adobe Photoshop.
  • Little Endian to odwrotność wyżej opisanej formy zapisu danych. W tym przypadku najbardziej znaczący bit zapisywany jest od końca. Tak samo pisane są teksty w języku, chociażby arabskim. Czytamy je od prawej strony do lewej.  Przykładowe formaty korzystające z tego typu kodowania to Rtf, Bmp, Gif.

Co ciekawe, nazwy Big Endian i Little Endian pochodzą z książki Podróże Guliwera i odnoszą się do sporu mieszkańców fikcyjnego Liliputu. Jedni uważali, że jajko powinno rozbijać się od „grubszego końca„, drudzy natomiast uważali, że od „końca cieńszego„.

Podsumowanie

Ogólnie rzecz ujmując Unicode to wielki „zbiór” znaków i wystarczy nam jeszcze na długo. Celowo nie wspominałem o UTF-ach oraz ISO, ponieważ chcę je omówić w osobnych artykułach. W przypadku opisywania ASCII materiały, z których korzystałem były ze sobą spójne. W przypadku Unicode wręcz przeciwnie dużo niejasności sporo sprzecznych informacji. Często musiałem sięgać do oficjalnych specyfikacji.

Gdy następnym razem zobaczysz dziwne „krzaczki” zamiast znaków w Twoim edytorze tekstu to przypomnij sobie o tym, że Unicode będzie lekarstwem. 

Na koniec dodam tylko tyle, że wpis ten celowo jest teoretyczny, by trochę odpocząć od kodowania. W ciągu kolejnego tygodnia pojawią się dwa wpisy. Numer 18 będzie podsumowaniem grudnia i pojawi się 1 stycznia 2020 roku o godzinie 18. Wpis kolejny, niedzielny będzie dotyczył algorytmu Luhn’a! Pojawi się standardowo jak w każdą niedzielę również o godzinie 18. Gdyby coś mi umknęło, to komunikuj czym prędzej! Oczywiście wpadnij też na naszą nową grupę na Facebook, która dostępna jest pod tym linkiem!

Na koniec łap dwie książki, które pomogą Ci w poszerzeniu tego tematu.

PS. Będę wdzięczny za komentarze pod tym postem!

PS2. Czeka też na Ciebie prezent. Wystarczy, że zapiszesz się na Newsletter poniżej!

PS3. Dołącz do naszej grupy na Facebook!


Subskrybuj

Zapisz się na Newsletter, odbierz NAGRODĘ w postaci e-booka z 10 omówionymi algorytmami pojawiającymi się w pytaniach podczas REKRUTACJI..

Dodatkowo otrzymuj co niedzielę informacje na temat nowych wpisów, wiadomości ze świata IT i matematyki oraz ciekawych wydarzeniach. Nie przegap i dołącz już dziś do 914 osób!.

Źródła

http://www.unicode.org/history/publicationdates.html#Release_Dates
https://www.unicode.org/history/summary.html
http://www.unikod.pl/ 
https://decodeunicode.org/ 
https://www.eurofresh.se/unicode.htm 
http://www.ia.pw.edu.pl/~jurek/js/kody/ 
https://www.mercurynews.com/2016/02/12/qa-mark-davis-president-of-the-unicode-consortium-on-the-rise-of-emojis/ 
https://www.unicode.org/L2/L2017/17284-emoji-recs.pdf
Autor

👨‍💻 .NET and Python programming passionate 🏦 Digtial Banking Solutions 🎓 Student 📊 Psychology 📚 Bookworm 🏠 Warsaw

5 komentarzy

  1. Bardzo ciekawy wpis. Dla mnie Unicode to coś bardzo abstrakcyjnego. Nie do końca wiem jak to wszystko działa, ale dobrze że działa. W zasadzie to czym dalej dokonuje się postęp technologiczny tym więcej jest poziomów abstrakcji.

    Zakładam że kiedyś inżynierowie w Microsofcie czy Apple wiedzieli jak komputer działa na najniższych poziomach natomiast zapewne teraz programiści pracują na wyższych warstwach abstrakcji i nie za bardzo nawet się przejmują tym w jaki sposób komputer wyświetla chociaż coś tak prostego jak znaki alfabetu.

    Sam tego nie wiem :-). W języku programowania wpisuje odpowiednią komendę i tyle, ale jak to funkcjonuje pod spodem, tego nie wiem.

    Fajnie że wprowadzili emoji w 2010. Lubię emoji :-p.

    Myślę że warto być dociekliwym i poznawać działanie komputerów na wszystkim poziomach.

Napisz komentarz

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.