Wstep do Informatyki

Transkrypt

Wstep do Informatyki
Wstep
˛ do Informatyki
dr hab. Bożena Woźna-Szcześniak, prof. AJD
[email protected]
Jan Długosz University, Poland
Wykład 5
Bożena Woźna-Szcześniak (AJD)
Wstep
˛ do Informatyki
Wykład 5
1 / 38
ASCII
ASCII (ang. American Standard Code for Information Interchange) to
7-bitowy kod przyporzadkowuj
˛
acy
˛ liczby z zakresu 0 − 127: literom
alfabetu angielskiego, cyfrom, znakom przestankowym i innym
symbolom oraz poleceniom sterujacym.
˛
Na przykład,
liczbie 65 = 01000001(2) odpowiada litera A.
liczbie 97 = 01100001(2) odpowiada litera a.
Zdanie: Ala ma kota., to zbiór nastepuj
˛ acych
˛
liczb: 65, 108, 97,
32, 109, 97, 32, 107, 111, 116, 97, 46 (binarnie: 0100 0001, 0110
1100, 0110 0001, 0010 0000, 0110 1101, 0110 0001, 0010 0000,
0110 1011, 0110 1111, 0111 0100, 0110 0001, 0010 1110.
Bożena Woźna-Szcześniak (AJD)
Wstep
˛ do Informatyki
Wykład 5
2 / 38
ASCII
ASCII - najcz˛eściej stosowany system kodowanie znaków do
grudnia 2007 r.
1963 - publikacja pierwszej edycji standardu.
1967 - publikacja kolejnej edycji standardu.
1986 - publikacja najnowszej aktualizacji standardu.
Bożena Woźna-Szcześniak (AJD)
Wstep
˛ do Informatyki
Wykład 5
3 / 38
ASCII
Znaki ASCII dziela˛ sie˛ na:
drukowalne: 95 znaków o kodach 32-126;
sterujace:
˛
33 znaki o kodach 0-31 i 127
Znaki drukowalne to: litery duże i małe, cyfry, znaki interpunkcyjne
oraz inne znaki, np. spacja (kod 32). Przykładowe kody:
liczba 35 odpowiada za znak #
liczby od 48 do 57 odpowiadaja˛ za kodowanie cyfr
liczba 64 odpowiada za znak at (@)
liczby od 65 do 90 odpowiadaja˛ za kodowanie dużych liter
liczby od 97 do 122 odpowiadaja˛ za kodowanie małych liter
liczba 126 odpowiada za znak tyldy ( )
Znaki sterujace
˛ służace
˛ do kontroli urzadzenia
˛
odbierajacego
˛
komunikat, np. drukarki czy terminala. Przykładowe kody:
liczbie 8 odpowiada "klawiszowi" Backspace
liczbie 27 odpowiada "klawiszowi" Escape
liczbie 127 odpowiada "klawiszowi" Delete
Bożena Woźna-Szcześniak (AJD)
Wstep
˛ do Informatyki
Wykład 5
4 / 38
ASCII
Znaki ASCII dziela˛ sie˛ na:
drukowalne: 95 znaków o kodach 32-126;
sterujace:
˛
33 znaki o kodach 0-31 i 127
Znaki drukowalne to: litery duże i małe, cyfry, znaki interpunkcyjne
oraz inne znaki, np. spacja (kod 32). Przykładowe kody:
liczba 35 odpowiada za znak #
liczby od 48 do 57 odpowiadaja˛ za kodowanie cyfr
liczba 64 odpowiada za znak at (@)
liczby od 65 do 90 odpowiadaja˛ za kodowanie dużych liter
liczby od 97 do 122 odpowiadaja˛ za kodowanie małych liter
liczba 126 odpowiada za znak tyldy ( )
Znaki sterujace
˛ służace
˛ do kontroli urzadzenia
˛
odbierajacego
˛
komunikat, np. drukarki czy terminala. Przykładowe kody:
liczbie 8 odpowiada "klawiszowi" Backspace
liczbie 27 odpowiada "klawiszowi" Escape
liczbie 127 odpowiada "klawiszowi" Delete
Tablica kodów ASCII dostepna
˛
jest np. na:
https://pl.wikipedia.org/wiki/ASCII
Bożena Woźna-Szcześniak (AJD)
Wstep
˛ do Informatyki
Wykład 5
4 / 38
ASCII - tablica kodów
Źródło:http:
//www.unicodetools.com/unicode/codepages.php
Bożena Woźna-Szcześniak (AJD)
Wstep
˛ do Informatyki
Wykład 5
5 / 38
Rozszerzony ASCII I
Rozszerzony ASCII lub Extended ASCII lub ANSI zapisuje znaki
na 8-bitach, czyli dzieki
˛ zagospodarowaniu ósmego bitu zawiera
256 znaków.
Dzieki
˛ 8-bitowemu ANSI można w tablicy znaków umieścić
dodatkowe znaki graficzne, a także znaki diakrytyczne - na
przykład polskie.
Pierwsze 128 pozycji jest zgodne z ASCII, nastepne
˛
to znaki
narodowe i inne symbole.
Istnieje wiele różnych rozszerzeń ASCII wykorzystujacych
˛
ósmy
bit nazywanych stronami kodowymi.
Różne strony kodowe przyjmuja˛ dla tego samego kodu odmienne
znaki, a ponadto różnia˛ sie˛ samymi zestawami znaków.
W zależności od wyboru strony kodowej, ten sam dokument może
być czytelny, moga˛ być trudności z jego odczytaniem albo też nie
bedzie
˛
można go w ogóle odczytać.
Bożena Woźna-Szcześniak (AJD)
Wstep
˛ do Informatyki
Wykład 5
6 / 38
Rozszerzony ASCII II
Miedzynarodowa
˛
organizacja normalizacyjna ISO stworzyła (w
porozumieniu z zainteresowanymi) zestaw standardów ISO/IEC
8859-x, gdzie x jest cyfra˛ od 1 do 16, służacych
˛
do kodowania
znaków za pomoca˛ 8 bitów.
Wszystkie zestawy ISO 8859 maja˛ znaki 0-127 identyczne jak w
kodzie ASCII.
Standardów kodowania polskich znaków to ISO-8859-2 (Latin-2;
łaciński dla Europy środkowej i wschodniej), ISO 8859-13 (Latin-7)
oraz ISO 8859-16 (Latin-10).
Opis pozostałych zestawów ISO można znaleźć, np. na:
https://pl.wikipedia.org/wiki/ISO_8859.
Bożena Woźna-Szcześniak (AJD)
Wstep
˛ do Informatyki
Wykład 5
7 / 38
Strona kodowa ISO-8859-2 (Central Europe)
Źródło:
http://www.unicodetools.com/unicode/codepages.php
Bożena Woźna-Szcześniak (AJD)
Wstep
˛ do Informatyki
Wykład 5
8 / 38
Rozszerzony ASCII
Kodowanie polskich znaków diakrytycznych w różnych standardach:
można znaleźć na stronie: https:
//pl.wikipedia.org/wiki/Kodowanie_polskich_znaków
Oto najbardziej popularne strony kodowe
ISO-8859-2 (Latin-2)
ISO 8859-16 (Latin-10) - łaciński dla Europy środkowej zmodyfikowany ISO 8859-2 ze znakiem euro i dodatkowymi
literami dla kilku jezyków.
˛
Windows-1250 (CP-1250) - strona kodowa używana przez system
Microsoft Windows.
Mac OS Central Europe - strona kodowa używana przez system
Mac OS w komputerach Macintosh.
Bożena Woźna-Szcześniak (AJD)
Wstep
˛ do Informatyki
Wykład 5
9 / 38
Strona kodowa Windows-1250 (Central Europe)
Źródło:
http://www.unicodetools.com/unicode/codepages.php
Bożena Woźna-Szcześniak (AJD)
Wstep
˛ do Informatyki
Wykład 5
10 / 38
Problemy stron kodowych
Każdy jezyk
˛
lub grupa jezyków
˛
ma własne kodowanie.
Różni producenci lub komitety normalizacyjne opracowuja˛ różne
kodowania, a co za tym idzie generalnie każdy jezyk
˛
ma kilka,
cz˛esto niekompatybilnych, kodowań, np. Windows-1250 i
ISO-8859-2.
Zastosowanie strony kodowej do nowego jezyka
˛
wymaga jej
przystosowania do reprezentacji znaków tego jezyka.
˛
Nie można łatwo mieszać wielu jezyków
˛
w jednym dokumencie
lub systemie.
Nie można łatwo przenosić dokumentów pomiedzy
˛
różnymi
programami i systemami operacyjnymi.
Bożena Woźna-Szcześniak (AJD)
Wstep
˛ do Informatyki
Wykład 5
11 / 38
Problemy stron kodowych
Każdy jezyk
˛
lub grupa jezyków
˛
ma własne kodowanie.
Różni producenci lub komitety normalizacyjne opracowuja˛ różne
kodowania, a co za tym idzie generalnie każdy jezyk
˛
ma kilka,
cz˛esto niekompatybilnych, kodowań, np. Windows-1250 i
ISO-8859-2.
Zastosowanie strony kodowej do nowego jezyka
˛
wymaga jej
przystosowania do reprezentacji znaków tego jezyka.
˛
Nie można łatwo mieszać wielu jezyków
˛
w jednym dokumencie
lub systemie.
Nie można łatwo przenosić dokumentów pomiedzy
˛
różnymi
programami i systemami operacyjnymi.
Recepta na powyższe problemy:
O PRACOWANIE UNIWERSALNEGO STANDARDU KODOWANIA
WSZYSTKICH ZNAKÓW Z WSZYSTKICH J EZYKÓW
˛
WYST EPUJ
˛
ACYCH
˛
( LUB KTÓRE WYST EPOWAŁY
˛
) NA ŚWIECIE
Bożena Woźna-Szcześniak (AJD)
Wstep
˛ do Informatyki
Wykład 5
11 / 38
Cz˛eściowa realizacja recepty - Unicode
Unicode zapewnia wygodna˛ obsługe˛ tekstów w dowolnym jezyku,
˛
ich przenośność pomiedzy
˛
programami i systemami operacyjnymi,
a także wymiane˛ dokumentów z osobami z całego świata.
Unicode zapewnia autorom ksiażek
˛
i naukowcom (zwłaszcza
lingwistom), że cytaty w obcych jezykach
˛
(nawet archaicznych i
wymarłych), zapisy fonetyczne, dodatkowe symbole akcentowe,
itp. sa˛ łatwo dostepne,
˛
oczywiście przy założeniu, że używany
font zawiera potrzebne znaki.
Unicode zawieraj również poszerzone wsparcie dla wzorów
matematycznych, co w połaczeniu
˛
z fontami typu OpenType czyni
Unicode użytecznym w procesie przygotowywania tekstów
matematycznych (ogólniej tekstów z zakresu nauk ścisłych) do
publikacji.
Bożena Woźna-Szcześniak (AJD)
Wstep
˛ do Informatyki
Wykład 5
12 / 38
Hostoria standardu Unicode I
1889r - Korzenie standardu Unicode można już znaleźć w ksiażce
˛
pod tytułem: Unicode: The Universal Telegraphic Phrase-Book. A
Code of Cypher Words for Commercial, Domestic, and Familiar
Phrases in Ordinary Use in Inland and Foreign Telegrams., czyli:
Unikod: Uniwersalna ksiażka
˛
skrótów telegraficznych. Słowa
kodujace
˛ zwroty handlowe, domowe i potoczne wykorzystywane
powszechnie w telegramach krajowych i zagranicznych.
Wydawca: Cassell Limited, 1889.
W formie oryginalnej: Uniwersytet Michigan.
W formie cyfrowej: 18 Maj 2007.
Kolejne wersje Unicode (http://www.unicode.org/
versions/enumeratedversions.html)
Październik 1991 - ukazuje sie˛ Unicode 1.0.0
Czerwiec 1993 - ukazuje sie˛ Unicode 1.1.0
Lipiec 1996 - ukazuje sie˛ Unicode 2.0.0
Maj 1998 - ukazuje sie˛ Unicode 2.1.2
Bożena Woźna-Szcześniak (AJD)
Wstep
˛ do Informatyki
Wykład 5
13 / 38
Hostoria standardu Unicode II
Sierpień 1998 - ukazuje sie˛ Unicode 2.1.5
Grudzień 1998 - ukazuje sie˛ Unicode 2.1.8
Kwiecień 1999 - ukazuje sie˛ Unicode 2.1.9
Wrzesień 1999 - ukazuje sie˛ Unicode 3.0.0
Sierpień 2000 - ukazuje sie˛ Unicode 3.0.1
Marzec 2001 - ukazuje sie˛ Unicode 3.1.0
Sierpień 2001 - ukazuje sie˛ Unicode 3.1.1
Marzec 2002 - ukazuje sie˛ Unicode 3.2.0
Kwiecień 2003 - ukazuje sie˛ Unicode 4.0.0
Marzec 2004 - ukazuje sie˛ Unicode 4.0.1
31 Marzec 2005 - ukazuje sie˛ Unicode 4.1.0
14 Lipiec 2006 - ukazuje sie˛ Unicode 5.0.0
4 Kwiecień 2008 - ukazuje sie˛ Unicode 5.1.0
1 Październik 2009 - ukazuje sie˛ Unicode 5.2.0
11 Październik 2010 - ukazuje sie˛ Unicode 6.0.0
31 Styczeń 2012 - ukazuje sie˛ Unicode 6.1.0
26 wrzesień 2012 - ukazuje sie˛ Unicode 6.2.0
30 wrzesień 2013 - ukazuje sie˛ Unicode 6.3.0
Bożena Woźna-Szcześniak (AJD)
Wstep
˛ do Informatyki
Wykład 5
14 / 38
Hostoria standardu Unicode III
16 Czerwiec 2014 - ukazuje sie˛ Unicode 7.0.0
17 Czerwiec 2015 - ukazuje sie˛ Unicode 8.0.0
Bożena Woźna-Szcześniak (AJD)
Wstep
˛ do Informatyki
Wykład 5
15 / 38
Znacznik kolejności bajtów
BOM - (ang. byte order mark)a
a
Źródło: https://pl.wikipedia.org/wiki/BOM_(informatyka)
BOM, czyli znacznik kolejności bajtów, to znak niedrukowalny
stosowany w wielobajtowym kodowaniu znaków.
BOM zapisywany jest na poczatku
˛
strumienia bajtów (pliku) i
informuje, w jakiej kolejności należy ustawić bajty, aby odczytać
kod znaku.
BOM rozwiazuje
˛
problem interpretacji kolejności bajtów w znaku i
umożliwia automatyczna˛ detekcje˛ formy kodowania Unicode.
BOM powieksza
˛
rozmiar danych o kilka bajtów.
Bożena Woźna-Szcześniak (AJD)
Wstep
˛ do Informatyki
Wykład 5
16 / 38
Little endian and Big endian
Little endian to forma zapisu danych, w której mniej znaczacy
˛ bajt
(ang. low-order byte) umieszczony jest jako pierwszy. Procesory
używajace
˛ formy little endian, to m.in. procesory z rodziny x86.
Big endian to forma zapisu danych, w której
najbardziej znaczacy
˛ bajt (ang. high-order byte) umieszczony jest
jako pierwszy. Procesory, które używaja˛ formy big endian, to m.in.,
HP Intel Itanium, SPARC, Motorola 68000, IBM System/360.
Bożena Woźna-Szcześniak (AJD)
Wstep
˛ do Informatyki
Wykład 5
17 / 38
Unicode - wprowadzenie I
Unicode jest standardem kodowania znaków, zaprojektowanym
do wymiany, przetwarzania i wyświetlania dokumentów pisanych
w każdym jezyku
˛
i dotyczacych
˛
każdej dziedziny współczesnego
świata. Ponadto, obsługuje klasyczne i historyczne teksty
zapisane wielu jezykach.
˛
Unicode jest rozwijany jest przez The Unicode Consortium, w
którego skład wchodza˛ ważne firmy komputerowe, producenci
oprogramowania, instytuty naukowe, agencje miedzynarodowe
˛
oraz grupy zainteresowanych użytkowników.
Bożena Woźna-Szcześniak (AJD)
Wstep
˛ do Informatyki
Wykład 5
18 / 38
Unicode - wprowadzenie II
Każda wersja standardu Unicode jest zdefiniowana poprzez
wydanie:
specyfikacji nowego jadra
˛
(the core specification),
tablicy kodów znaków (ang. Character Code Charts,
http://www.unicode.org/charts/),
standardowych załaczników
˛
(ang. Unicode Standard Annexes,
http://www.unicode.org/reports/index.html) - np.
załacznik
˛
przedstawiajacy
˛ algorytm łamania linii.
bazy danych znaków Unicode (ang. The Unicode Character
Database - UCD, http://www.unicode.org/ucd/) - baza ta
składa sie˛ z wielu plików danych zawierajacych
˛
listy znaków wraz z
zwiazanymi
˛
z nimi danymi. Zawiera również pliki danych
zawierajace
˛ dane z badań dotyczacych
˛
zgodności z normami
ważnych algorytmów Unicode.
Wersje standardu Unicode sa˛ w pełni kompatybilne i
zsynchronizowane z odpowiednimi wersjami miedzynarodowej
˛
normy ISO/IEC 10646.
Bożena Woźna-Szcześniak (AJD)
Wstep
˛ do Informatyki
Wykład 5
19 / 38
Unicode - wprowadzenie III
Norma ISO/IEC 10646 opisuje uniwersalny zestaw znaków (UCS Universal Character Set) służacy
˛ do opisu znaków (liter, cyfr,
symboli, ideogramów itd.) z wielu jezyków
˛
i pism na świecie.
Zestaw zawiera około 100 000 abstrakcyjnych znaków, z których
każdy posiada unikalna˛ nazwe˛ i kod znaku.
Każda implementacja standardu, która jest zgodna z Unicode, jest
również zgodna z ISO/IEC 10646.
Standard Unicode przypisuje każdemu znakowi unikalna˛ wartość
liczbowa˛ i nazwe˛ oraz pozostaje w spójności z ASCII.
Standard Unicode i ISO/IEC 10646 zapewniaja˛ wsparcie dla
trzech formy kodowania: UTF-8, UTF-16, UTF-32, które
wykorzystuja˛ wspólny zestaw znaków. Wspomniane formy
kodowania pozwala na zakodowanie aż miliona znaków.
Bożena Woźna-Szcześniak (AJD)
Wstep
˛ do Informatyki
Wykład 5
20 / 38
Jakie znaki zawiera Standard Unicode ? I
Standard Unicode definiuje kody znaków, które sa˛ używane
obecnie we wszystkich głównych jezykach
˛
pisanych. Obsługiwane
pisma to: pismo europejskie, pismo bliskowschodnie (pisane z
prawej do lewej) oraz wiele pism Azjatyckich.
Standard Unicode zawiera ponadto: znaki interpunkcyjne, znaki
diakrytyczne i diakrytyki, symbole matematyczne, symbole
techniczne, strzałki, ideogramy itp.
Znaki diakrytyczne to znaki graficzne używane w alfabetach i
innych systemach pisma, umieszczane nad, pod litera,
˛ obok lub
wewnatrz
˛ niej, zmieniajace
˛ artykulacje˛ tej litery i tworzace
˛ przez to
nowa˛ litere.
˛ W alfabetach sylabowych moga˛ zmienić znaczenie
całej sylaby1 .
W jezyku
˛
polskim jest dziewieć
˛ liter tworzonych za pomoca˛ znaków
diakrytycznych (litery diakrytyzowane, litery diakrytyczne): a,
˛ ć, e,
˛ ł,
ń, ó, ś, ź, ż.
Bożena Woźna-Szcześniak (AJD)
Wstep
˛ do Informatyki
Wykład 5
21 / 38
Jakie znaki zawiera Standard Unicode ? II
Ideogram to umowny znak graficzny lub pisemny wyrażajacy
˛
określone pojecie
˛
bez użycia liter. Ideogramami posługuje sie˛
współcześnie pismo chińskie2 .
Źródło: https://en.wikipedia.org/wiki/Ideogram
Unicode Standard w wersji 8.0 oferuje kody dla 120 672 znaków z
głównych alfabetów świata, zbiory ideogramów oraz symboli.
1
2
https://pl.wikipedia.org/wiki/Znaki_diakrytyczne
https://pl.wikipedia.org/wiki/Ideogram
Bożena Woźna-Szcześniak (AJD)
Wstep
˛ do Informatyki
Wykład 5
22 / 38
Przestrzeń kodowa Unicode I
Przestrzeń kodowa Unicode podzielona jest na 17 obszarów
kodowych ponumerowanych nastepuj
˛ aco:
˛
0, 1, . . ., 9, A, . . ., F, 10.
Każdy obszar kodowy może zakodować 65536 znaków (16 bitów),
tzn. zawiera 65536 kodów (ang. code points).
Bożena Woźna-Szcześniak (AJD)
Wstep
˛ do Informatyki
Wykład 5
23 / 38
Przestrzeń kodowa Unicode II
Obszar podstawowy nr 0 (ang. Basic Multilingual Plane, BMP) najważniejszy obszar kodowy, który zawiera prawie wszystkie
powszechnie używane pisma i symbole. Znajduja˛ sie˛ tutaj znaki z
kodami z zakresu: od U+0000 do U+FFFF (tj. 0 - 65 535), tj.
znaki i symbole łacińskie
transkrypcje
europejskie znaki i systemy pisanie (np. grecki i cyrylica)
znaki afrykańskie i azjatyckie (np. Hiragana i Katakana)
znaki diakrytyczne
ideogramy chińskie, japońskie i koreańskie
symbole i różne inne znaki
miejsce na prywatne znaki zdefiniowane przez użytkownika
Obszar dodatkowy nr 1 (ang. Supplementary Multilingual Plane
(SMP)) - obejmuje znaki z kodami z zakresu: U+10000 U+1FFFF.
SMP zawiera historyczne systemy pisma i symbole, które sa˛
bardzo rzadko używane, na przykład, znaki domina.
Bożena Woźna-Szcześniak (AJD)
Wstep
˛ do Informatyki
Wykład 5
24 / 38
Przestrzeń kodowa Unicode III
Obszar dodatkowy ideogramów nr 2 (ang. Supplementary
Ideographic Plane, SIP) - obejmuje znaki z kodami z zakresu:
U+20000 - U+2FFFF.
SIP zawiera wyłacznie
˛
znaki japońskie, chińskie i koreańskie, które
sa˛ rzadko używane.
Zakres kodów od U+30000 do U+DFFFF, czyli obszary kodowe
od 3 do 13(D) nie sa˛ jeszcze zagospodarowane.
Obszar kodowy nr 14 (E) (ang. Supplementary Special-Purpose
Plane, SSP) - obejmuje znaki z kodami z zakresu: U+E0000 U+EFFFF
SSP zawiera, m.in., dodatkowe znaki sterujace
˛ oraz zbiór
alternatywnych glifów.
Glif (glyf) to kształt przedstawiajacy
˛ w określonym kroju pisma
konkretny grafem lub symbol3 .
Bożena Woźna-Szcześniak (AJD)
Wstep
˛ do Informatyki
Wykład 5
25 / 38
Przestrzeń kodowa Unicode IV
Klasyczny glif złożony z f i. Źródło:
https://pl.wikipedia.org/wiki/Glif_(typografia)
Obszary kodowe nr 15(F) i 16(10) z zakresu kodowego od
U+F0000 do U+10FFFF sa˛ zarezerwowane do użytku prywatnego
i moga˛ być używane indywidualnie. Znaki te nie sa˛ jasno
określone przez Unicode Consortium.
3
https://pl.wikipedia.org/wiki/Glif_(typografia)
Bożena Woźna-Szcześniak (AJD)
Wstep
˛ do Informatyki
Wykład 5
26 / 38
Formy kodowania standardu Unicode
Standardy kodowania znaków definiuja˛ nie tylko jego wartość
liczbowa˛ (punkt kodowy), ale również ilość bitów na jakich ta
wartość jest reprezentowana.
Standard Unicode definiuje trzy formy kodowania, które pozwalaja˛
aby te same dane reprezentowane były na 1 bajcie, 2 bajtach lub
4 bajtach (czyli za pomoca˛ 8, 16 lub 32 bitów na tzw. code unit):
UTF-8
UTF-16LE, UTF-16-BE
UTF-32LE, UTF-32-BE
Wszystkie trzy formy kodowania koduja˛ ten sam zbiór znaków i
moga˛ być skutecznie przekształcony pomiedzy
˛
soba˛ bez utraty
danych.
Wszystkie trzy formy kodowania potrzebuja˛ co najwyżej 4 bajty
(32 bity) na zakodowanie każdego znaku.
Bożena Woźna-Szcześniak (AJD)
Wstep
˛ do Informatyki
Wykład 5
27 / 38
Formy kodowania standardu Unicode - UTF-8 I
UTF-8 - najcz˛eściej używany format kodowania znaków Unicode:
UTF-8 wykorzystuje od 8 do 32 bitów do zakodowania
pojedynczego znaku.
UTF-8 jest w pełni kompatybilny z ASCII, tzn. stosowany jest tylko
jeden bajt na znak i wartość tego bajtu jest taka sama jak w
kodowaniu ASCII.
UTF-8 jest szczególnie przydatny do tekstów, które składaja˛ sie˛
głównie ze znaków ASCII lub ANSI i zawieraja˛ tylko kilka innych
znaków, jak to ma miejsce, na przykład, w jezyku
˛
angielskim lub
tekstach jezyków
˛
europejskich.
UTF-8 znaki łacińskie ze znakami diakrytycznymi (np. niemicki
umlaut - Ä, Ö), lub litery greckie czy cyrylice koduje przy użyciu 2
bajtów. 4 bajty sa˛ wykorzystywane wyłacznie
˛
do rzadko
używanych znaków, takich jak nietypowe zanki chińskie,
japońskie, czy koreańskich.
Bożena Woźna-Szcześniak (AJD)
Wstep
˛ do Informatyki
Wykład 5
28 / 38
Formy kodowania standardu Unicode - UTF-8 II
Wada˛ UTF-8 jest wiekszy
˛
rozmiar, gdy zamiast znaków ASCII lub
ANSII stosowane sa˛ znaki, których zakodowanie wymaga 3 lub 4
bajtów.
Format UTF-8 nie ma problemów z Little endian and Big endian.
Zawiera znacznik kolejności bajtów (ang. byte order mark, BOM)
w postaci kodu 0xEF 0xBB 0xBF (takie krzaczki:  ).
Nie zawiera bajtów 0xFF i 0xFE, wiec
˛ łatwo można go odróżnić od
tekstu UTF-16.
Standard UTF-8 jest dominujacym
˛
kodowaniem znaków w sieci
WWWeb; zastosowany jest w 85,0% wszystkich stron
internetowych (stan na wrzesień 2015) roku.
Internet Mail Consortium (IMC) zaleca, aby wszystkie programy
do obsługi e-maila były w stanie wyświetlać i tworzyć mail za
pomoca˛ UTF-8, a W3C zaleca UTF-8 jako domyślne kodowania w
XML i HTML.
Bożena Woźna-Szcześniak (AJD)
Wstep
˛ do Informatyki
Wykład 5
29 / 38
Metody kodowania UTF-8 I
Mapowanie znaków Unicode na ciagi
˛ bajtów zaproponowane przez
Davea Prossera i lekko zmodyfikowane przez Kena Thompsona:
Pierwszy i Ostatni
punkt kodowy
U+0000-U+007F
U+0080-U+07FF
U+0800-U+FFFF
U+10000-U+1FFFFF
Bajt 1
Bajt 2
Bajt 3
Bajt 4
0xxxxxxx
110xxxxx
1110xxxx
11110xxx
10xxxxxx
10xxxxxx
10xxxxxx
10xxxxxx
10xxxxxx
10xxxxxx
Znaki z przedziału ASCII (0 do 127) kodowane sa˛ jako jeden bajt.
Znaki diakrytyczne, np. polskie, kodowane sa˛ jako dwa bajty
Listopad 2003 - kodowanie UTF-8 zostaje ograniczone zgodnie z
memo RFC 3629 do 0x10FFFF punktów kodowych, w celu
zapewnienia zgodności z ograniczeniami systemu UTF-16.
Oryginalna specyfikacja kodowania zakładała użycie nawet 6
bajtów.
Bożena Woźna-Szcześniak (AJD)
Wstep
˛ do Informatyki
Wykład 5
30 / 38
Kodowanie UTF-8 - przykład (1 bajt)
Kodowanie znaku $, który w Unicode ma punkt kodowy U+0024
implementowany na 1 bajcie (7 bitów punktu kodowego):
Kod binarny: 010 0100
UTF-8 binarnie na 1 bajcie: 00100100
Kod szesnastkowy: 24
Bożena Woźna-Szcześniak (AJD)
Wstep
˛ do Informatyki
Wykład 5
31 / 38
Kodowanie UTF-8 - przykład (2 bajty)
c który w Unicode ma punkt kodowy U+00A9
Kodowanie znaku ,
implementowany na 2 bajtach (11 bitów punktu kodowego):
Kod binarny: 000 1010 1001
UTF-8 binarnie na 1 bajcie: 1100 0010
UTF-8 binarnie na 2 bajcie: 1010 1001
Bożena Woźna-Szcześniak (AJD)
Wstep
˛ do Informatyki
Wykład 5
32 / 38
Kodowanie UTF-8 - przykład (3 bajty)
Kodowanie znaku e, który w Unicode ma punkt kodowy U+20AC
implementowany na 3 bajtach (16 bitów punktu kodowego):
20AC16 =0010 0000 1010 11002 po uzupełnieniu wiodacymi
˛
0 do
16 bitów - tyle bitów należy zakodować na 3 bajtach w UTF-8.
Kodowanie 1 bajta:
Ustawiamy pierwsze 4 wiadace
˛ bity na 1110
Pozostałe bity pierwszego bajtu pochodza˛ z 4 najstarszych bitów
kodowanej wartości w Unicode, tj. 0010.
Wynikowy 1 bajt: 11100010
Kodowanie 2 i 3 bajta:
pozostałe bity, tj. 0000 1010 1100, dzielone sa˛ na dwa bloki po 6
bitów każdy, tj. 000010 oraz 101100.
do 6-bitowych bloków dodawane sa˛ bity wiodace
˛ 10
Wynikowy 2 bajt: 1000 0010; Wynikowy 3 bajt: 1010 1100
Wynikowe kodowanie 3 bajtów: 11100010 10000010 10101100 =
0xE282AC.
Bożena Woźna-Szcześniak (AJD)
Wstep
˛ do Informatyki
Wykład 5
33 / 38
Kodowanie UTF-8 - przykład (4 bajty)
Kodowanie znaku gotyckiego Manna (M), który w Unicode ma punkt
kodowy U+1033C implementowany na 4 bajtach (21 bitów punktu
kodowego):
Kod binarny: 0 0001 0000 0011 0011 1100
UTF-8 binarnie na 1 bajcie: 1111 0000
UTF-8 binarnie na 2 bajcie: 1001 0000
UTF-8 binarnie na 3 bajcie: 1000 1100
UTF-8 binarnie na 4 bajcie: 1011 1100
Bożena Woźna-Szcześniak (AJD)
Wstep
˛ do Informatyki
Wykład 5
34 / 38
Formy kodowania standardu Unicode - UTF-16 I
UTF-16 jest jednym z najstarszych formatów kodowania Unicode.
UTF-16 jest zoptymalizowany pod katem
˛
najcz˛eściej używanych
znaków (tj. znaków z obszaru BMP); znaki te kodowane sa˛ przy
pomocy 2 bajtów (16-bitów). Pozostałe znaki kodowane sa˛ przy
pomocy 4 bajtów (32-bitów).
UTF-16 zawiera bajty 0xFF i 0xFE informujace
˛ o kolejności
ustawienia bajtów; Big Endian: 0xFE 0xFF oraz Little Endian:
0xFF 0xFE;
UTF-16 Little Endian jest używany do wewnetrznej
˛
reprezentacji
ciagów
˛
znaków w systemie Windows 2000/XP/2003/Vista i to jest
to co przez kodowaniem "Unicode"jest rozumiane w Notatniku
Windows.
UTF-16 Little Endian jest również używany do wewnetrznej
˛
reprezentacji ciagów
˛
znaków w innych systemach operacyjnych
takich jak Mac OS X lub Symbian.
Bożena Woźna-Szcześniak (AJD)
Wstep
˛ do Informatyki
Wykład 5
35 / 38
Formy kodowania standardu Unicode - UTF-32 I
Każdy znak Unicode w formacie UTF-32 jest kodowany przy
pomocy 4 bajtów (32-bitów).
UTF-32 jest wykorzystywane wówczas, gdy wymagana jest stała
reprezentacja znaków oraz pamieć
˛ nie stanowi problemu.
UTF-32 może być implementowane zarówno jako Big Endian i
Little Endian.
UTF-32 zawiera bajty 0xFF i 0xFE informujace
˛ o kolejności
ustawienia bajtów; Big Endian: 0x00 0x00 0xFE 0xFF oraz Little
Endian: 0xFF 0xFE 0x00 0x00;
Bożena Woźna-Szcześniak (AJD)
Wstep
˛ do Informatyki
Wykład 5
36 / 38
Konwersja kodowania
$file wi05.tex
wi05.tex: LaTeX 2e document, UTF-8 Unicode text
$iconv -f utf8 -t utf-16 wi05.tex > wi05-16.tex
$file wi05-16.tex
wi05-16.tex: LaTeX 2e document,
Little-endian UTF-16 Unicode text
$iconv -f utf8 -t cp1250 wi05.tex > wi05-cp1250.tex
$file wi05-cp1250.tex
wi05-cp1250.tex: LaTeX 2e document, Non-ISO extended-A
with LF, NEL line terminators
Bożena Woźna-Szcześniak (AJD)
Wstep
˛ do Informatyki
Wykład 5
37 / 38
Konwersja kodowania
$iconv --list
Poniższa lista zawiera wszystkie znane zakodowane
zestawy znaków. Nie oznacza to, że wszystkie kombinacj
zestawów moga˛ być używane jako parametry OD i DO.
Jeden zestaw znaków może znajdować si˛
e na liście pod
wieloma nazwami (aliasami). ..., ASCII, ..., CP1250,..
ISO-8859-1, ISO-8859-2,..., ISO-8859-13, ISO-8859-14,
ISO-8859-15, ISO-8859-16, UNICODE, UTF-7,
UTF-8, UTF-16, UTF-16BE, UTF-16LE, UTF-32, ...,
WINDOWS-1250, ...
Bożena Woźna-Szcześniak (AJD)
Wstep
˛ do Informatyki
Wykład 5
38 / 38

Podobne dokumenty