{"id":275,"date":"2019-01-16T22:14:52","date_gmt":"2019-01-16T22:14:52","guid":{"rendered":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/?post_type=chapter&#038;p=275"},"modified":"2019-04-08T16:55:08","modified_gmt":"2019-04-08T16:55:08","slug":"silmaring-tekstikodeeringud","status":"publish","type":"chapter","link":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/chapter\/silmaring-tekstikodeeringud\/","title":{"raw":"Silmaring: Tekstikodeeringud","rendered":"Silmaring: Tekstikodeeringud"},"content":{"raw":"<h3>Erinevad t\u00e4hestikud<\/h3>\r\n<p class=\"vspace\">Vahel tuleb ette, et tekstis paistab mingi t\u00e4ht kummalisena - v\u00f5ib-olla on see asendatud teise t\u00e4he, arusaamatu m\u00e4rgi, k\u00fcsim\u00e4rgi v\u00f5i hoopis mitme m\u00e4rgiga. Eestikeelses tekstis on sellisteks asendatud t\u00e4htedeks tavaliselt \u00f5, \u00e4, \u00f6, \u00fc ja ka \u0161, \u017e. Need on t\u00e4hed, mis ladina p\u00f5hit\u00e4hestikus puuduvad. Selliseid teistele v\u00f5\u00f5raid t\u00e4hti leidub paljudes ladina t\u00e4hestikul p\u00f5hinevates t\u00e4hestikes. N\u00e4iteks on <a class=\"urllink\" href=\"https:\/\/en.wikipedia.org\/wiki\/Polish_alphabet\" target=\"_blank\" rel=\"noopener\">poola t\u00e4hestikus<\/a> \u0105, \u0107, \u0119, \u0142, \u0144, \u00f3, \u015b, \u017a, \u017c, <a class=\"urllink\" href=\"https:\/\/en.wikipedia.org\/wiki\/German_orthography\" target=\"_blank\" rel=\"noopener\">saksa keeles<\/a> aga kasutatakse t\u00e4hti \u00e4, \u00f6, \u00fc ja \u00df. Selliste t\u00e4htedega on eriti arvutitega seoses m\u00f5nev\u00f5rra rohkem muresid kui ladina t\u00e4hestiku p\u00f5hit\u00e4htedega. M\u00f5nedel juhtudel ongi neist loobutud - n\u00e4iteks kriipsukesed, kaarekesed ja konksukesed j\u00e4etakse \u00e4ra v\u00f5i t\u00e4ht asendatakse mingite s\u00fcmbolite kombinatsiooniga. Tegelikult kannavad need omap\u00e4rased t\u00e4hed lisaks keelelisele t\u00e4hendusele ka teatud ajaloo ja identiteediga seotud v\u00e4\u00e4rtust ja nendest ei tohiks kergek\u00e4eliselt loobuda.<\/p>\r\n<p class=\"vspace\">Lisaks ladina t\u00e4hestikul p\u00f5hinevatele t\u00e4hestikele on kasutusel palju teisi s\u00fcsteeme, millel on omakorda alams\u00fcsteeme. N\u00e4iteks <a class=\"urllink\" href=\"https:\/\/et.wikipedia.org\/wiki\/Vene_t%C3%A4hestik\" target=\"_blank\" rel=\"noopener\">vene<\/a>, <a class=\"urllink\" href=\"https:\/\/en.wikipedia.org\/wiki\/Ukrainian_alphabet\" target=\"_blank\" rel=\"noopener\">ukraina<\/a> ja <a class=\"urllink\" href=\"https:\/\/en.wikipedia.org\/wiki\/Belarusian_alphabet\" target=\"_blank\" rel=\"noopener\">valgevene<\/a> t\u00e4hestikud on sarnased, aga mitte viimse t\u00e4heni samad. M\u00f5nede keelte puhul kasutatakse paralleelselt erinevaid t\u00e4hestikke. Nii on n\u00e4iteks <a class=\"urllink\" href=\"https:\/\/en.wikipedia.org\/wiki\/Serbian_language\" target=\"_blank\" rel=\"noopener\">serbia keele<\/a> puhul kasutusel nii ladina t\u00e4hestikul kui ka kirillitsal p\u00f5hinevad variandid.<\/p>\r\n<p class=\"vspace\">Arvestades, et mitmetes keeltes on kasutusel hierogl\u00fc\u00fcfid, mida v\u00f5ib olla v\u00e4ga palju (eriti v\u00f5rreldes\u00a0 Euroopas levinud paarik\u00fcmne t\u00e4hega t\u00e4hestikes), on tegemist tuhandete erinevate m\u00e4rkidega, mida maailmas tekstide kirjapanekuks kasutatakse.<\/p>\r\n\r\n<h3>7 v\u00f5i 8 bitti. ASCII<\/h3>\r\n<p class=\"vspace\">Natuke lihtsustatult v\u00f5ib \u00f6elda, et arvutis kujutatakse t\u00e4hti (ja teisi m\u00e4rke) kahendarvudena - \u00fchtede ja nullide jadadena. Selleks, et konkreetne t\u00e4ht paistaks ka mujal sellisena nagu algselt m\u00f5eldud, on tarvis j\u00e4rgida mingisugust standardit.<\/p>\r\n<p class=\"vspace\">1963. aastal avaldati <a class=\"urllink\" href=\"https:\/\/et.wikipedia.org\/wiki\/Ameerika_Informatsioonivahetuse_Standardkood\" target=\"_blank\" rel=\"noopener\">ASCII<\/a> (<em>American Standard Code for Information Interchange<\/em>) standardi esimene versioon. Standardiseerimisp\u00fc\u00fcdeid oli ennegi ja lokaalselt need ka toimisid, kuid ASCII m\u00f5ju oli laiem ja see on olnud mitmete edasiste standardite aluseks.<\/p>\r\n<p class=\"vspace\">ASCII p\u00f5hitabelis on 128 m\u00e4rki. Konkreetse m\u00e4rgi t\u00e4histamiseks kasutatakse kahendarvu, milles on seitse kahendnumbrit (e bitti). Erinevaid v\u00f5imalusi on sellisel juhul 128 (= 2<sup>7<\/sup>) ja nii ongi ASCII p\u00f5hitabelis 128 m\u00e4rki. P\u00f5hitabelis on erim\u00e4rkide ja numbrite k\u00f5rval ladina t\u00e4hestiku need t\u00e4hed, mida kasutatakse inglise keeles. Esindatud on nii suurt\u00e4hed kui v\u00e4iket\u00e4hed, seejuures suurt\u00e4hed A-Z (koodid k\u00fcmnends\u00fcsteemis 65 kuni 90, kahends\u00fcsteemis 1000001 kuni 1011010) on v\u00e4ikestest a-z (koodid k\u00fcmnends\u00fcsteemis 97 kuni 122, kahends\u00fcsteemis 1100001 kuni 1111010) eespool. P\u00f5hitabelis olevate m\u00e4rkidega saab ingliskeelseid tekste juba kenasti kirja panna.<\/p>\r\n<p class=\"vspace\">Kui n\u00fc\u00fcd tahta kasutada teisi t\u00e4hti, siis need enam s\u00fcsteemi ei mahu. Loomulik oli v\u00f5tta m\u00e4ngu kaheksas bitt, mis annab 128 m\u00e4rki juurde. Nii tehtigi, aga v\u00f5imalikke kandidaate j\u00e4rgmisele 128 kohale oli rohkem, kui sinna \u00e4ra mahtus. Oli ju vajadus erinevate ladina t\u00e4hestikul baseeruvate t\u00e4hestike spetsiaalsete t\u00e4htede jaoks, samuti kreeka t\u00e4htede jaoks, kirillitsa t\u00e4htede jaoks jm.<\/p>\r\n<p class=\"vspace\">Siin toimus hargnemine selles m\u00f5ttes, et kasutusele v\u00f5eti erinevad koodis\u00fcsteemid, kus sama koodiga v\u00f5ivad eri s\u00fcsteemides olla erinevad m\u00e4rgid. J\u00e4rgnevas tabelis on m\u00f5ned m\u00e4rgid erinevatest kooditabelitest:<\/p>\r\n\r\n<table border=\"1\">\r\n<tbody>\r\n<tr>\r\n<th>Kodeering<\/th>\r\n<th>Kood 177<\/th>\r\n<th>Kood 195<\/th>\r\n<th>Kood 212<\/th>\r\n<th>Kood 213<\/th>\r\n<\/tr>\r\n<tr>\r\n<td><a class=\"urllink\" href=\"https:\/\/en.wikipedia.org\/wiki\/Windows-1252\" target=\"_blank\" rel=\"noopener\">Windows-1252 (CP1252)<\/a><\/td>\r\n<td>\u00b1<\/td>\r\n<td>\u00c3<\/td>\r\n<td>\u00d4<\/td>\r\n<td>\u00d5<\/td>\r\n<\/tr>\r\n<tr>\r\n<td align=\"left\"><a class=\"urllink\" href=\"https:\/\/en.wikipedia.org\/wiki\/ISO\/IEC_8859-5\" target=\"_blank\" rel=\"noopener\">ISO\/IEC 8859-5<\/a> (mitteformaalselt Latin\/Cyrillic)<\/td>\r\n<td>\u0411<\/td>\r\n<td>\u0423<\/td>\r\n<td>\u0434<\/td>\r\n<td>\u0435<\/td>\r\n<\/tr>\r\n<tr>\r\n<td align=\"left\"><a class=\"urllink\" href=\"https:\/\/en.wikipedia.org\/wiki\/ISO\/IEC_8859-7\" target=\"_blank\" rel=\"noopener\">ISO\/IEC 8859-7<\/a> (mitteformaalselt Latin\/Greek)<\/td>\r\n<td>\u00b1<\/td>\r\n<td>\u0393<\/td>\r\n<td>\u03a4<\/td>\r\n<td>\u03a5<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\nSellise l\u00e4henemise \u00fcks puudus on see, et \u00fches ja samas tekstis ei saa h\u00e4sti kasutada erinevate kooditabelite m\u00e4rke.\r\n<h3>Mitu baiti. Unicode. UTF-8<\/h3>\r\n<p class=\"vspace\">Edasi p\u00fc\u00fcti luua standardit, kus k\u00f5ik vajalikud m\u00e4rgid on erinevate koodidega olemas. T\u00e4nap\u00e4eval on selleks Unicode, mis on rahvusvaheline standard arvutite tekstide kodeerimiseks. <a class=\"urllink\" href=\"http:\/\/unicode.org\/charts\/\" target=\"_blank\" rel=\"noopener\">Unicode'i tabelid<\/a> on olemas v\u00e4ga erinevate s\u00fcmbolite jaoks. Kuna kahends\u00fcsteemi arvud l\u00e4hevad kiiresti pikaks, siis on tabelites kasutatud vastavaid kuueteistk\u00fcmnends\u00fcsteemi arve.<\/p>\r\n<p class=\"vspace\">Lisaks standardi olemasolule on vajalik seda v\u00f5imalikult s\u00e4\u00e4stlikult rakendada, sest \u00fcleliigne m\u00e4lukasutus muutub ruttu v\u00e4ga kulukaks. 1993. aasta alguses tutvustati ametlikult kodeeringut <a class=\"urllink\" href=\"https:\/\/en.wikipedia.org\/wiki\/UTF-8\" target=\"_blank\" rel=\"noopener\">UTF-8<\/a>, millega on v\u00f5imalik k\u00f5iki Unicode-i s\u00fcmboleid esitada. UTF-8 on alates 2008. aastast veebis levinuim koodeering (praegu on hinnanguliselt umbes 87% veebilehtedest selles kodeeringus). UTF-8 on l\u00fchend fraasist <strong>U<\/strong>niversal Coded Character Set + <strong>T<\/strong>ransformation <strong>F<\/strong>ormat \u2013 <strong>8<\/strong>-bit. UTF-8 kasutab kaheksabitilisi koodi\u00fchikuid, mida konkreetse m\u00e4rgi jaoks v\u00f5ib olla kasutuses 1 kuni 4. Kaheksa bitti annab kokku \u00fche baidi ja baitide kaupa on arvuti m\u00e4lus m\u00f5istlik \"arveldada\".<\/p>\r\n<p class=\"vspace\">UTF-8 esimesed 128 m\u00e4rki (ja koodidki) on samad, mis ASCII p\u00f5hitabelis. UTF-8 kasutab neil juhtudel \u00fchte kaheksabitilist koodi\u00fchikut. K\u00f5ik ASCII kodeeringus tekstid on seega kohe ka UTF-8 kodeeringus.<\/p>\r\n<p class=\"vspace\">J\u00e4rgmise 1920 m\u00e4rgi puhul kasutatakse kahte kaheksabitilist koodi\u00fchikut. Siin on erinevate ladina t\u00e4hestikul p\u00f5hinevate t\u00e4hestike erilisemad t\u00e4hed, samuti kreeka, kirillitsa, heebrea, araabia, kopti ja armeenia t\u00e4hed.<\/p>\r\n<p class=\"vspace\">Kolme kaheksabitilist koodi\u00fchikut kasutatakse n\u00e4iteks hiina, korea ja jaapani kirjam\u00e4rkide puhul.<\/p>\r\n<p class=\"vspace\">Nelja koodi\u00fchikut on vaja \u00fclej\u00e4\u00e4nud Unicode'i tabelis olevate m\u00e4rkide jaoks, mille hulgas on n\u00e4iteks matemaatilised s\u00fcmbolid ja piktogrammid.<\/p>\r\n\r\n<h3>Kodeeringud Pythonis<\/h3>\r\n<p class=\"vspace\">Ka Pythonis saab kasutada erinevaid tekstikodeeringuid. Nii saame n\u00e4iteks faili avamisel tekstikodeeringu m\u00e4\u00e4rata: <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">open(failiNimi, \"w\", encoding=\"UTF-8\")<\/code>.<\/p>\r\n<p class=\"vspace\">N\u00fc\u00fcd p\u00fc\u00fcame Unicode'i tabelites olevaid huvitavaid m\u00e4rke ekraanile saada. Vastav <a class=\"urllink\" href=\"https:\/\/docs.python.org\/3\/howto\/unicode.html\" target=\"_blank\" rel=\"noopener\">ingliskeelne materjal<\/a> on selles abiks olnud. Proovime saada ekraanile <a class=\"urllink\" href=\"http:\/\/unicode.org\/charts\/PDF\/U0370.pdf\" target=\"_blank\" rel=\"noopener\">kreeka<\/a> suure delta (kood 0394) ja <a class=\"urllink\" href=\"http:\/\/unicode.org\/charts\/PDF\/UA980.pdf\" target=\"_blank\" rel=\"noopener\">jaava<\/a> t\u00e4he, mille kood on A996:<\/p>\r\n\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">print('\\u0394\\uA996')<\/pre>\r\n&nbsp;","rendered":"<h3>Erinevad t\u00e4hestikud<\/h3>\n<p class=\"vspace\">Vahel tuleb ette, et tekstis paistab mingi t\u00e4ht kummalisena &#8211; v\u00f5ib-olla on see asendatud teise t\u00e4he, arusaamatu m\u00e4rgi, k\u00fcsim\u00e4rgi v\u00f5i hoopis mitme m\u00e4rgiga. Eestikeelses tekstis on sellisteks asendatud t\u00e4htedeks tavaliselt \u00f5, \u00e4, \u00f6, \u00fc ja ka \u0161, \u017e. Need on t\u00e4hed, mis ladina p\u00f5hit\u00e4hestikus puuduvad. Selliseid teistele v\u00f5\u00f5raid t\u00e4hti leidub paljudes ladina t\u00e4hestikul p\u00f5hinevates t\u00e4hestikes. N\u00e4iteks on <a class=\"urllink\" href=\"https:\/\/en.wikipedia.org\/wiki\/Polish_alphabet\" target=\"_blank\" rel=\"noopener\">poola t\u00e4hestikus<\/a> \u0105, \u0107, \u0119, \u0142, \u0144, \u00f3, \u015b, \u017a, \u017c, <a class=\"urllink\" href=\"https:\/\/en.wikipedia.org\/wiki\/German_orthography\" target=\"_blank\" rel=\"noopener\">saksa keeles<\/a> aga kasutatakse t\u00e4hti \u00e4, \u00f6, \u00fc ja \u00df. Selliste t\u00e4htedega on eriti arvutitega seoses m\u00f5nev\u00f5rra rohkem muresid kui ladina t\u00e4hestiku p\u00f5hit\u00e4htedega. M\u00f5nedel juhtudel ongi neist loobutud &#8211; n\u00e4iteks kriipsukesed, kaarekesed ja konksukesed j\u00e4etakse \u00e4ra v\u00f5i t\u00e4ht asendatakse mingite s\u00fcmbolite kombinatsiooniga. Tegelikult kannavad need omap\u00e4rased t\u00e4hed lisaks keelelisele t\u00e4hendusele ka teatud ajaloo ja identiteediga seotud v\u00e4\u00e4rtust ja nendest ei tohiks kergek\u00e4eliselt loobuda.<\/p>\n<p class=\"vspace\">Lisaks ladina t\u00e4hestikul p\u00f5hinevatele t\u00e4hestikele on kasutusel palju teisi s\u00fcsteeme, millel on omakorda alams\u00fcsteeme. N\u00e4iteks <a class=\"urllink\" href=\"https:\/\/et.wikipedia.org\/wiki\/Vene_t%C3%A4hestik\" target=\"_blank\" rel=\"noopener\">vene<\/a>, <a class=\"urllink\" href=\"https:\/\/en.wikipedia.org\/wiki\/Ukrainian_alphabet\" target=\"_blank\" rel=\"noopener\">ukraina<\/a> ja <a class=\"urllink\" href=\"https:\/\/en.wikipedia.org\/wiki\/Belarusian_alphabet\" target=\"_blank\" rel=\"noopener\">valgevene<\/a> t\u00e4hestikud on sarnased, aga mitte viimse t\u00e4heni samad. M\u00f5nede keelte puhul kasutatakse paralleelselt erinevaid t\u00e4hestikke. Nii on n\u00e4iteks <a class=\"urllink\" href=\"https:\/\/en.wikipedia.org\/wiki\/Serbian_language\" target=\"_blank\" rel=\"noopener\">serbia keele<\/a> puhul kasutusel nii ladina t\u00e4hestikul kui ka kirillitsal p\u00f5hinevad variandid.<\/p>\n<p class=\"vspace\">Arvestades, et mitmetes keeltes on kasutusel hierogl\u00fc\u00fcfid, mida v\u00f5ib olla v\u00e4ga palju (eriti v\u00f5rreldes\u00a0 Euroopas levinud paarik\u00fcmne t\u00e4hega t\u00e4hestikes), on tegemist tuhandete erinevate m\u00e4rkidega, mida maailmas tekstide kirjapanekuks kasutatakse.<\/p>\n<h3>7 v\u00f5i 8 bitti. ASCII<\/h3>\n<p class=\"vspace\">Natuke lihtsustatult v\u00f5ib \u00f6elda, et arvutis kujutatakse t\u00e4hti (ja teisi m\u00e4rke) kahendarvudena &#8211; \u00fchtede ja nullide jadadena. Selleks, et konkreetne t\u00e4ht paistaks ka mujal sellisena nagu algselt m\u00f5eldud, on tarvis j\u00e4rgida mingisugust standardit.<\/p>\n<p class=\"vspace\">1963. aastal avaldati <a class=\"urllink\" href=\"https:\/\/et.wikipedia.org\/wiki\/Ameerika_Informatsioonivahetuse_Standardkood\" target=\"_blank\" rel=\"noopener\">ASCII<\/a> (<em>American Standard Code for Information Interchange<\/em>) standardi esimene versioon. Standardiseerimisp\u00fc\u00fcdeid oli ennegi ja lokaalselt need ka toimisid, kuid ASCII m\u00f5ju oli laiem ja see on olnud mitmete edasiste standardite aluseks.<\/p>\n<p class=\"vspace\">ASCII p\u00f5hitabelis on 128 m\u00e4rki. Konkreetse m\u00e4rgi t\u00e4histamiseks kasutatakse kahendarvu, milles on seitse kahendnumbrit (e bitti). Erinevaid v\u00f5imalusi on sellisel juhul 128 (= 2<sup>7<\/sup>) ja nii ongi ASCII p\u00f5hitabelis 128 m\u00e4rki. P\u00f5hitabelis on erim\u00e4rkide ja numbrite k\u00f5rval ladina t\u00e4hestiku need t\u00e4hed, mida kasutatakse inglise keeles. Esindatud on nii suurt\u00e4hed kui v\u00e4iket\u00e4hed, seejuures suurt\u00e4hed A-Z (koodid k\u00fcmnends\u00fcsteemis 65 kuni 90, kahends\u00fcsteemis 1000001 kuni 1011010) on v\u00e4ikestest a-z (koodid k\u00fcmnends\u00fcsteemis 97 kuni 122, kahends\u00fcsteemis 1100001 kuni 1111010) eespool. P\u00f5hitabelis olevate m\u00e4rkidega saab ingliskeelseid tekste juba kenasti kirja panna.<\/p>\n<p class=\"vspace\">Kui n\u00fc\u00fcd tahta kasutada teisi t\u00e4hti, siis need enam s\u00fcsteemi ei mahu. Loomulik oli v\u00f5tta m\u00e4ngu kaheksas bitt, mis annab 128 m\u00e4rki juurde. Nii tehtigi, aga v\u00f5imalikke kandidaate j\u00e4rgmisele 128 kohale oli rohkem, kui sinna \u00e4ra mahtus. Oli ju vajadus erinevate ladina t\u00e4hestikul baseeruvate t\u00e4hestike spetsiaalsete t\u00e4htede jaoks, samuti kreeka t\u00e4htede jaoks, kirillitsa t\u00e4htede jaoks jm.<\/p>\n<p class=\"vspace\">Siin toimus hargnemine selles m\u00f5ttes, et kasutusele v\u00f5eti erinevad koodis\u00fcsteemid, kus sama koodiga v\u00f5ivad eri s\u00fcsteemides olla erinevad m\u00e4rgid. J\u00e4rgnevas tabelis on m\u00f5ned m\u00e4rgid erinevatest kooditabelitest:<\/p>\n<table>\n<tbody>\n<tr>\n<th>Kodeering<\/th>\n<th>Kood 177<\/th>\n<th>Kood 195<\/th>\n<th>Kood 212<\/th>\n<th>Kood 213<\/th>\n<\/tr>\n<tr>\n<td><a class=\"urllink\" href=\"https:\/\/en.wikipedia.org\/wiki\/Windows-1252\" target=\"_blank\" rel=\"noopener\">Windows-1252 (CP1252)<\/a><\/td>\n<td>\u00b1<\/td>\n<td>\u00c3<\/td>\n<td>\u00d4<\/td>\n<td>\u00d5<\/td>\n<\/tr>\n<tr>\n<td align=\"left\"><a class=\"urllink\" href=\"https:\/\/en.wikipedia.org\/wiki\/ISO\/IEC_8859-5\" target=\"_blank\" rel=\"noopener\">ISO\/IEC 8859-5<\/a> (mitteformaalselt Latin\/Cyrillic)<\/td>\n<td>\u0411<\/td>\n<td>\u0423<\/td>\n<td>\u0434<\/td>\n<td>\u0435<\/td>\n<\/tr>\n<tr>\n<td align=\"left\"><a class=\"urllink\" href=\"https:\/\/en.wikipedia.org\/wiki\/ISO\/IEC_8859-7\" target=\"_blank\" rel=\"noopener\">ISO\/IEC 8859-7<\/a> (mitteformaalselt Latin\/Greek)<\/td>\n<td>\u00b1<\/td>\n<td>\u0393<\/td>\n<td>\u03a4<\/td>\n<td>\u03a5<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Sellise l\u00e4henemise \u00fcks puudus on see, et \u00fches ja samas tekstis ei saa h\u00e4sti kasutada erinevate kooditabelite m\u00e4rke.<\/p>\n<h3>Mitu baiti. Unicode. UTF-8<\/h3>\n<p class=\"vspace\">Edasi p\u00fc\u00fcti luua standardit, kus k\u00f5ik vajalikud m\u00e4rgid on erinevate koodidega olemas. T\u00e4nap\u00e4eval on selleks Unicode, mis on rahvusvaheline standard arvutite tekstide kodeerimiseks. <a class=\"urllink\" href=\"http:\/\/unicode.org\/charts\/\" target=\"_blank\" rel=\"noopener\">Unicode&#8217;i tabelid<\/a> on olemas v\u00e4ga erinevate s\u00fcmbolite jaoks. Kuna kahends\u00fcsteemi arvud l\u00e4hevad kiiresti pikaks, siis on tabelites kasutatud vastavaid kuueteistk\u00fcmnends\u00fcsteemi arve.<\/p>\n<p class=\"vspace\">Lisaks standardi olemasolule on vajalik seda v\u00f5imalikult s\u00e4\u00e4stlikult rakendada, sest \u00fcleliigne m\u00e4lukasutus muutub ruttu v\u00e4ga kulukaks. 1993. aasta alguses tutvustati ametlikult kodeeringut <a class=\"urllink\" href=\"https:\/\/en.wikipedia.org\/wiki\/UTF-8\" target=\"_blank\" rel=\"noopener\">UTF-8<\/a>, millega on v\u00f5imalik k\u00f5iki Unicode-i s\u00fcmboleid esitada. UTF-8 on alates 2008. aastast veebis levinuim koodeering (praegu on hinnanguliselt umbes 87% veebilehtedest selles kodeeringus). UTF-8 on l\u00fchend fraasist <strong>U<\/strong>niversal Coded Character Set + <strong>T<\/strong>ransformation <strong>F<\/strong>ormat \u2013 <strong>8<\/strong>-bit. UTF-8 kasutab kaheksabitilisi koodi\u00fchikuid, mida konkreetse m\u00e4rgi jaoks v\u00f5ib olla kasutuses 1 kuni 4. Kaheksa bitti annab kokku \u00fche baidi ja baitide kaupa on arvuti m\u00e4lus m\u00f5istlik &#8220;arveldada&#8221;.<\/p>\n<p class=\"vspace\">UTF-8 esimesed 128 m\u00e4rki (ja koodidki) on samad, mis ASCII p\u00f5hitabelis. UTF-8 kasutab neil juhtudel \u00fchte kaheksabitilist koodi\u00fchikut. K\u00f5ik ASCII kodeeringus tekstid on seega kohe ka UTF-8 kodeeringus.<\/p>\n<p class=\"vspace\">J\u00e4rgmise 1920 m\u00e4rgi puhul kasutatakse kahte kaheksabitilist koodi\u00fchikut. Siin on erinevate ladina t\u00e4hestikul p\u00f5hinevate t\u00e4hestike erilisemad t\u00e4hed, samuti kreeka, kirillitsa, heebrea, araabia, kopti ja armeenia t\u00e4hed.<\/p>\n<p class=\"vspace\">Kolme kaheksabitilist koodi\u00fchikut kasutatakse n\u00e4iteks hiina, korea ja jaapani kirjam\u00e4rkide puhul.<\/p>\n<p class=\"vspace\">Nelja koodi\u00fchikut on vaja \u00fclej\u00e4\u00e4nud Unicode&#8217;i tabelis olevate m\u00e4rkide jaoks, mille hulgas on n\u00e4iteks matemaatilised s\u00fcmbolid ja piktogrammid.<\/p>\n<h3>Kodeeringud Pythonis<\/h3>\n<p class=\"vspace\">Ka Pythonis saab kasutada erinevaid tekstikodeeringuid. Nii saame n\u00e4iteks faili avamisel tekstikodeeringu m\u00e4\u00e4rata: <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">open(failiNimi, \"w\", encoding=\"UTF-8\")<\/code>.<\/p>\n<p class=\"vspace\">N\u00fc\u00fcd p\u00fc\u00fcame Unicode&#8217;i tabelites olevaid huvitavaid m\u00e4rke ekraanile saada. Vastav <a class=\"urllink\" href=\"https:\/\/docs.python.org\/3\/howto\/unicode.html\" target=\"_blank\" rel=\"noopener\">ingliskeelne materjal<\/a> on selles abiks olnud. Proovime saada ekraanile <a class=\"urllink\" href=\"http:\/\/unicode.org\/charts\/PDF\/U0370.pdf\" target=\"_blank\" rel=\"noopener\">kreeka<\/a> suure delta (kood 0394) ja <a class=\"urllink\" href=\"http:\/\/unicode.org\/charts\/PDF\/UA980.pdf\" target=\"_blank\" rel=\"noopener\">jaava<\/a> t\u00e4he, mille kood on A996:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">print('\\u0394\\uA996')<\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"author":12,"menu_order":5,"template":"","meta":{"pb_show_title":"on","pb_short_title":"","pb_subtitle":"","pb_authors":[],"pb_section_license":""},"chapter-type":[],"contributor":[],"license":[],"class_list":["post-275","chapter","type-chapter","status-publish","hentry"],"part":233,"_links":{"self":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/pressbooks\/v2\/chapters\/275","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/pressbooks\/v2\/chapters"}],"about":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/wp\/v2\/types\/chapter"}],"author":[{"embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/wp\/v2\/users\/12"}],"version-history":[{"count":6,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/pressbooks\/v2\/chapters\/275\/revisions"}],"predecessor-version":[{"id":437,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/pressbooks\/v2\/chapters\/275\/revisions\/437"}],"part":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/pressbooks\/v2\/parts\/233"}],"metadata":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/pressbooks\/v2\/chapters\/275\/metadata\/"}],"wp:attachment":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/wp\/v2\/media?parent=275"}],"wp:term":[{"taxonomy":"chapter-type","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/pressbooks\/v2\/chapter-type?post=275"},{"taxonomy":"contributor","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/wp\/v2\/contributor?post=275"},{"taxonomy":"license","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/wp\/v2\/license?post=275"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}