Unicode

**Unicode** eða **samkóti** er heiti á stöðluðu kerfi í tölvuiðnaði sem gerir tölvum kleift að sýna og meðhöndla texta í flestum ritkerfum heims með samræmdum hætti, auk tákna, t.d. emoji (líka í lit). Unicode er eina kerfið sem ræður við íslensku *og* líka önnur tungumál sem notuð eru á Íslandi, s.s. pólsku.

Staðallinn, sem er viðhaldið af sjálfseignarstofnuninni Unicode Consortium, skilgreinir (í útgáfu 16.0 frá 2024) 154.998 stafatákn  fyrir 168 ritkerfi (bæði nútíma og kerfi sem ekki eru lengur notuð). Val er um að nota UTF-8, sem flestir ráðleggja, og er allsráðandi á internetinu, eða t.d. UTF-16 sem er líka notað (þó ekki fyrir vefinn) en ekkert annað kerfi til að tákna Unicode er algengt (í okkar heimshluta). Microsoft ráðleggur núna UTF-8 fyrir t.d. Windows (og Xbox) forritun, en þar til nýlega lagði áherslu á UTF-16. Sumir staðlar krefjast að notað sé UTF-8 (en ekki aðrar útgáfur af Unicode, s.s. UTF-16).

Árangur Unicode við að sameina stafatöflur hefur leitt til þess að Unicode er orðið afar útbreitt (á forminu UTF-8 sem notað af 98% af vefsíðum) og er ríkjandi við þýðingu og staðfæringu hugbúnaðar. Staðallinn hefur verið innleiddur í margar nýlegar tækninýjungar á hugbúnaðarsviði, svo sem nútímastýrikerfi, XML og flest nútíma forritunarmál.

Ólíkt ISO 8859-1 stafatöflunni (líka kölluð Latin1), sem var ráðandi fyrir íslensku, þar sem allir stafir taka eitt bæti (og líka í Windows-1252, og skyldum töflum, sem var jafnvel oftar notuð en er svipuð, og eins varðandi alla íslenska stafi), taka séríslenskir stafir í íslensku tvö bæti í Unicode. Fyrstu 256 táknin í Unicode samsvara ISO 8859-1, en aðeins fyrstu 128, þ.e. ASCII (án t.d. séríslensku stafanna), taka eitt bæti í UTF-8 (en 2 bæti í UTF-16, sem er því verra fyrir íslensku og mörg önnur mál). Kostir Unicode, umfram áðurnefndar stafatöflur, eru meðal annars að texti er ekki lengur takmarkaður við íslensku, ensku (og nokkur önnur mál aðallega úr vestur-Evrópu) heldur er hægt að nota t.d. allt gríska stafrófið með (sem er gott fyrir stærðfræðilegan texta), auk annarra tákna úr stærðfræði. Einnig er t.d. hægt að nota Unicode sem lesist frá hægri til vinstri, t.d. arabísku og hebresku (aðeins betri hugbúnaður getur birt þannig texta rétt, en Unicode styður skrift í báðar áttir t.d. blandað saman í sömu setningu, og flestir vafrar, s.s. Firefox og Chrome, ráða við það).

Unicode má innleiða með nokkrum mismunandi kóðunum, sem breyta kóðum fyrir stafi í röð af bætum. Staðallinn skilgreinir þrjár kóðanir og nokkrar aðrar kóðanir eru líka til. Algengastu kóðanirnar eru UTF-8 (sem er eina formið samhæft við ASCII) og UTF-16 (sem er enn stutt í Windows en nú UTF-8 jafnfætis, og Microsoft ráðleggur nú frekar að nota UTF-8 í t.d. Windows forritun). Öll form af Unicode (sem eru í raunverulegri notkun; í skrám) taka mismikið pláss fyrir mismunandi stafi (eru „variable length“); sem dæmi fyrir t.d. „emoji“ tákn (t.d. broskalla) þarf hið minnsta 4 bæti með UTF-16 (og UTF-8). Nútíma emoji tákn eru bara studd með Unicode. Til eru afbrigði af UTF-8, sem sum eru algeng, t.d. Modified UTF-8 (notað t.d. af Java, sem notar líka UTF-16) og WTF-8 (Wobbly Transformation Format). Minna algeng er t.d. CESU-8 (Compatibility Encoding Scheme for UTF-16: 8-Bit), sem t.d Oracle gagnagrunnar styður (áður eina formið fyrir Unicode í þeim grunnum, en núorðið er UTF-8 líka stutt).

## Saga og smáatriði
Unicode (frá og með UTF-16) býður upp á 1.114.112 möguleg tákn (í 17 „plönum“), þ.e. er hugsað til framtíðar til að styðja öll framtíðartungumál líka (og notendur geta líka skilgreint sín eigin í Private Use Area (PUA)).

Svokallað byte order mark (BOM), eða **Unicode signature**, er ekki nauðsynlegt né æskilegt í UTF-8 texta (og þá er textinn strangt til tekið ekki lengur löglegur sem UTF-8), en er ráðlagt í UTF-16 textaskrám. Windows notar UTF-16LE („little endian“), sem UTF-16, en UTF-16BE er líka til (og UTF-32LE og UTF-32BE). Mörg forrit, t.d. á Linux ráða ekki við UTF-16 skrár jafnvel þó það sé löglegur valmöguleiki, á t.d. Windows. Á Windows var UCS-2 fyrst notað og svo UTF-16, og í seinni tíð í meira mæli UTF-8. Sögulega séð var Unicode takmarkað við 65.536 stafatákn, þ.e. UCS-2, þar til kínverjar þvinguðu fram breytingar („Han unification“) til að styðja kínversku betur, og úr varð UTF-16.

Upphaflega Unicode réð við auk latneska letursins sem við erum vön, t.d. við kýrílískt letur, grískt, arabískt, hebreskt, taílenskt og letur fyrir tíbesk tungumál. Táknin fyrir tíbesk mál voru reyndar tekin út úr Unicode 1.1, en komu aftur inn í Unicode 2.0 í júlí 1996 á nýjum stað í stafatöflunni. Útgáfa 1.0.1 frá júní 1992 bætti við 20.902 táknum (fleirum síðar) sem notuð eru í kínversku, japönsku og kóresku. Síðar var bætt við hangul fyrir kóresku, en þau tákn voru líka færð og fjölgað í 11.172 tákn í Unicode 2.0.

Unicode 12.1 bætti við aðeins einu nýju tákni, fram yfir Unicode 12.0, fyrir tímabil nýs keisara í Japan sem tók við 2019 af föður sínum.

Unicode 12.1 er með 32 tákn fyrir gjaldmiðla, því síðasta var bætt við í Unicode 10.0 fyrir Bitcoin ₿. Mörg gjaldmiðlatáknin voru frá með byrjun, en evrutákninu € var bætt við í 2.1 í maí 1998 og t.d. tyrknesk lírunni var bætt við í Unicode 6.2 í september 2012. Dollaramerkið $ hefur verið alla tíð frá ASCII.

Stóru eszett ẞ var bætti við í Unicode 5.1 í apríl 2008 en ekki notað af neinu ráði í þýsku þar til um 2017. Því og litla eszett ß (sem lengi hefur verið notað í þýskumælandi löndum) verður að passa að rugla ekki við litla gríska beta β. Áður en stóra eszett kom til, var erfitt fyrir tölvur að geta breytt orðum í hástafi og svo til baka, og ætlast til að fá sömu stafarunu út. Röðun í stafrófsröð er líka erfið, sérstaklega þegar texta á mörgum tungumálum er blandað saman (til þess eru reglur fyrir röðun Evrópskra mála og séstakt reiknirit fyrir Unicode-röðun), en jafnvel þótt um eitt mál sé að ræða þá er ekki endilega ein rétt leið. Í þýskum orðabókum er „öf“ raðað á undan „of“, en öfugt í símaskrá (eitt af því sem er öðruvísi fyrir símaskrárröðun). Og milli mála geta reglur stangast á.  Í taílensku þarf að víxla ákveðnum stöfum til að fá rétta röðun.

Unicode er með alls konar tákn fyrir tónlist, t.d. bætti Unicode 3.1 í mars 2001 við táknum fyrir vestræna tónlist og tákn fyrir tónlist frá Býsantímanum.

Mögulegar kóðanir fyrir Unicode eru UTF-8 (sem notar 1 bæti fyrir öll ASCII tákn, en annars upp í 4 bæti), UCS-2 (sem nú er úrelt, notar 2 bæti fyrir öll tákn, en inniheldur ekki öll tákn í Unicode staðlinum) og UTF-16 (sem er framlenging á UCS-2 og notar þannig 4 bæti fyrir tákn sem ekki eru í UCS-2). Fyrir nánast heiminn allan (en ekki endilega fyrir austur-Asíu) tekur UTF-8 alltaf minna pláss en UTF-16 fyrir texta viðkomandi svæðis.

Sem dæmi er UTF-8 sjálfgefið fyrir XML (en leyfir t.d. UTF-16), og JSON leyfir eingöngu UTF-8 (í núgildandi stöðum). Það er líka reglan í nýrri stöðum að leyfa eingöngu UTF-8.

Minna notaðar kóðanir eru t.d. UTF-32 sem er líka staðlað en sjaldan notað fyrir skrár; og UTF-EBCDIC (sem er ekki leyfilegt á internetinu, en var búið til fyrir stórtölvur, þó í raun sjaldan notað) þar sem stafir taka mest 5 bæti (UTF-8 þarf mest 4 bæti). Kínverjar nota GB 18030 stafatöflu sem er líka kóðun fyrir Unicode. Standard Compression Scheme for Unicode (SCSU), sem t.d. Microsoft SQL Server notar mögulega (en styður líka UTF-8 í staðinn í nýrri útgáfum, líkt of flestir aðrari gagnagrunnar) og Binary Ordered Compression for Unicode (BOCU-1) eru þjappanir fyrir Unicode.

## Tenglar
* The Unicode Consortium
* Hvað er Unicode? 
* UTF-8 Everywhere Manifesto (stefnuyfirlýsing)
* DIN 91379 – evrópskt hlutmengi af Unicode (inniheldur líka grísku og kýrillískt stafróf fyrir búlgörsku), notar UTF-8 á viðmótum, með „normalization form C“ (NFC) – þýskur staðall frá 2022

## Heimildir