Bia Rask Webbkurs

ÖVRIGT

TECKENKODNING

 


Inledning

Har du stött på någon webbsida som är svÃ¥r att läsa för att tecknen ser konstiga ut?

En teckenkodning är ett sätt att representera olika tecken. Du känner säkert till morsealfabetet med sina kombinationer av korta och långa signaler. Den internationella nödsignalen är tre korta signaler (S), tre långa (O) och tre korta igen (S).

På liknande sätt fungerar det i datavärlden också, men istället för korta och långa signaler använder man ettor och nollor. Olika kombinationer blir olika bokstäver och tecken.

Datorsystemtillverkare har gjort egna teckenkodningar. Några av dem kommer vi att titta lite på.

 

Kursmål

Kunskaper om teckenkodning och förmåga att hantera olika standarder för teckenkodning.

 

Centralt innehåll

Teckenkodning: orientering om ASCII, ISO-8859, Windows-1252 och Unicode.

 

Ettor & nollor

Datorn arbetar i grunden bara med ettor och nollor. I processorn sitter ett stort antal transistorer.

1 = ström passerar
0 = ingen ström passerar

Ett och noll räcker inte långt, så datorn sätter ihop flera ettor och nollor i följd.

När du räknar använder du ett decimalt system (0-9). Enligt Liftarens guide till galaxen är meningen med livet, universum och allt 42. Om det ligger något i det lämnar vi osagt, men vi vet i alla fall att vi behöver fler än en siffra för att skriva talet.

42 = 4×10 + 2×1

Datorn använder ett binärt system (0-1). Varje siffra är dubbelt så stor som den efterföljande.

42 = 101010
42 = 1×32 + 0×16 + 1×8 + 0×4 + 1×2 + 0×1
42 = 32 + 0 + 8 + 0 + 2 + 0

En nolla eller etta kallas bit. Bit kommer från engelskans binary digit, binär siffra.

En grupp om åtta kallas oktett och kan repesentra tal från 0-255. (Ibland används oktett och byte som synonymer, men det är inte helt korrekt. En oktett är alltid åtta bitar, men antalet bitar i en byte kan variera.)

På liknande sätt finns det ett oktalt talsystem som använder åtta siffror (0-7)

42 = 52 (5×8 + 2×1)

... och ett hexadecimalt system som använder 16 siffror (0-9 samt A-F, A=10, B =11 osv)

42 = 2A (2×16 + 10×1)

 

Teckenkodning
(character encoding)

För att kunna hantera text vid datorn tilldelas varje bokstav, siffra, skiljetecken och att antal andra tecken var sin sifferkod, ett indexnummer som kallas kodpostition.

En uppsättning tecken (characters) är en teckenkodning. En teckenkodning kallas även repertoar. Jämför med en orkesters repertoar. Repertoaren är de musikstycken orkestern har övat in och kan spela. I datorvärlden motsvaras det av de tecken som kan visas.

Hur många tecken som ingår i en teckenkodning varierar beroende på hur många bitar den omfattar.

bitar 1 2 3 4 5 6 7 8
tecken 2 4 8 16 32 64 128 256

 


ASCII

ASCII står för American Standard Code for Information Interchange.

ASCII är en tidig standard som använder 7 bitar och kan representera talen 0-127.

128 tecken räcker till engelskans versaler, gemener, siffror, diverser skiljetecken, tabb, vagnretur etc. Det räcker dock inte till att stoppa in andra språks varianter, som våra å, ä och ö. Därför kom det snart flera olika ASCII-standarder som inte var kompatibla sinsemellan. Inte helt praktiskt när man skulle skicka filer mellan varandra...

Den ursprungliga ASCII kallas idag US-ASCII eller ISO/IEC 646. Den är fortfarande viktig eftersom den är en minsta gemensamma nämnare som alla datorer stöder.

ISO/IEC 8859

ISO/IEC 8859 togs fram för att kunna utbyta dokument mellan olika länder och för att kunna använda olika språk i ett och samma dokument.

ISO/IEC 8859 använder åtta biter (en oktett) och rymmer 256 kodpositioner. De första 128 är identiska med US-ASCII. Andra hälften används för mer speciella bokstäver och andra symboler.

 

ISO/IEC 8859-1

Den version som innehåller västeuropeiska språk, bland annat svenska, fick namnet ISO/IEC 8859-1.

(Kallas även Latin-1.)

 

ISO/IEC 8859-15

Världen förändras och i och med det våra behov. När euron infördes 1999 ville vi till exempel kunna skriva tecknet €. Några tecken i ISO/IEC 8859-1 som inte användes så flitigt byttes ut mot andra man upplevde saknades och den uppdaterade teckenkodningen fick namnet ISO/IEC 8859-15.

ISO/IEC 8850-15 slog inte igenom i någon högre grad, för i samma veva som det kom började Unicode slå igenom och det äldre Windows 1252 innehöll redan tecken man ville komma åt.

(Kallas även Latin-9.)

Windows-1252

Microsoft skapade en egen variant av ISO/IEC 8859-serien. Den teckenkodning som närmast motsvarar ISO/IEC 8859-1 heter Windows-1252.

Webbsidor som skapats med Microsoftverktyg, till exempel Word, använder ofta windows-1252 även om de anger att de använder ISO/IEC 8859-1. Det kan innebära att vissa tecken inte visas som de ska på annat än Windows. En lösning på sådana problem är att använda sig av Unicode istället.

 


Unicode

ISO/IEC 8859-serien löste många av problemen för europeiska språk och en hel del andra språk som kan representeras i 8 bitars teckenkodning, men det finns så många fler språk. Tanken med Unicode var att få en gemensam teckenkodning som fungerar för hela världen, för alla datorsystem och samtidigt, i den mån det är möjligt, vara kompatibelt med gamla teckenkodningar. Unicode innehåller även tekniska och matematiska symboler, tecken för att skriva musik och historiska skrivsystem som runskrift.

Unicode har plats för miljoner tecken. De första 256 är desamma som för ISO/IEC 8859-1 och de första 128 samma som US-ASCII.

Kodpositionerna anges i hexadecimal form. Till exempel har ett versalt A position 64 (41 hexadecimalt) och skrivs som U+0041.

 

UTF-8

Precis som med ISO/IEC 8859-serien finns det olika varianter av Unicode. En av dem är UTF-8, den teckenkodning som används till denna webbsida.

Ju fler bitar en teckenkodning använder, desto fler kodpositioner innehåller den. Det kan låta bra, men blir samtidigt ineffektivt. En lite långsökt liknelse, men som kanske kan hjälpa dig att förstå, är om du tänker dig att du skulle behöva säga namn, personnummer, adress och stamtavla varje gång du skulle omnämna en person, eller om det räcker att säga "Kalle". Betydligt smidigare. För att spara minne och bandbredd i datorer och på webben tog man fram varianter med variabelt antal oktetter (1-4) beroende på vilket språk man skriver på. För grekiska krävs två oktetter. Thailändska kräver tre.

 

(Unicode påminner om ISO/IEC 10646, men det finns skillnader.)

 

Deklarera rätt

UTF-8 är ett bra val. Det täcker nästan alla tecken du kan komma att behöva.

Du deklararerar att det är utf-8 du använt i <head>: <meta charset="UTF-8">. Eller du och du, Dreamweaver fyller i det automatiskt när du skapar en ny sida.

Då och då undrar elever varför tecknen ser så konstiga ut på webben trots att de skrivit att de använt utf-8. Man måste prata grekiska för att grekerna ska förstå. Det räcker inte med att hävda att det är grekiska, det måste vara det också. Det räcker inte heller att skriva UTF-8 vid meta charset, man måste spara texten i det också. För att välja teckenkodning i Dreamweaver går du till menyn Ändra > Sidegenskaper > Titel/kodning > Kodning.

Symboler & speciella tecken

Ibland behöver men tecken som man inte hittar på tangentbordet.

Man kan använda numeriska teckenreferenser. De börjar med &# och avslutas med semikolon.

© = &#169;

Det går också använda symboliska namn. De börjar med &, följs av enhetens namn och avslutas med semikolon.

© = &copy;

Tittar du i din kod ser du förmoldigen &nbsp; här och där. Det är det symboliska namnet för mellanslag.

Här är några exempel som kanske kan komma till användning:

Tecken Symboliskt namn Numerisk teckenreferens
(mellanslag) &nbsp; &#160;
© &copy; &#169;
< &lt; &#60;
> &gt; &#62;
× &times; &#215;
÷ &divide; &#247;
&asymp; &#8776;
° &deg; &#176;
² (m²) &sup2; &#178;
¼ &frac14; &#188;
½ &frac12; &#189;
¾ &frac34; &#190;
&euro; &#8364;
£ &pound; &#163;
$   &#36;
&hearts; &#9829;
  &#9733;

 

Observera att alla tecken och symboler visas inte i alla teckensnitt.

Läs mer på w3schools.com > HTML Symbols. Söker du andra tecken, googla till exempel på specialtecken och html eller symbol och html. Titta även på bland Dingbats och de olika rubrikerna ovanför dessa i menyn på w3schools.com.