Uppsala universitet
Institutionen för lingvistik
Språkteknologiprogrammet
Grundläggande databehandling, ht 2002
Leif-Jöran Olsson
Som nämnts vid flera tillfällen tidigare på kursen: Saker och ting uppfattas olika på olika nivåer. Idag några av de tydligaste exemplen på det: Representation av enskilda tecken och representation av dokument.
För att representera tecken och text i datorn krävs en "kodning" av tecknen. Kodningarna är inget annat än konventioner, och alltså finns flera olika som inte stämmer överens med varandra. Man kan jämföra med teckenkodningen morse som gör det möjligt att skicka bokstäver och andra tecken med hjälp av bara korta och långa signaler. Teckenkodningarna som datorerna använder gör det möjligt att skicka bokstäver och andra tecken med hjälp av bara "ettor och nollor", så länge alla inblandade parter är överens om kodningen.
ASCII
Av de äldre teckenkoderna är det nästan bara en som har överlevt: ASCII (= American Standard Code for Information Interchange). Den publicerades först 1963, blev (i reviderad form) ANSI-standard 1968 (ANSI = American National Standards Institute). Den började tidigt användas av alla datortillverkare utom den absolut största, IBM.
Även den internationella standardiseringsorganisationen ISO kom att bygga standarder på ASCII. Det är en "7-bitarskodning" (värden 0--127) och har med alla tecken på ett vanligt amerikanskt tangentbord:
Koderna i ASCII ser ut ungefär som följer:
- 0--31: "kontrolltecken" (inklusive nyradstecken etcetera)
- 32: mellanslag
- 33--64: skiljetecken
- (48--57: siffror 0--9)
- 65--90: versaler A--Z
- 91--96: mer skiljetecken
- 97--122: gemener a--z
- 122--126: mer skiljetecken
- 127: Kontrolltecknet DEL (= delete)
För svenska ändamål saknar man i första hand ÅÄÖ. Det var ungefär lika lite avsikten med ASCII att stödja svensk text som rysk, japansk eller arabisk, så det är inte på grund av någon miss.
ISO 8859 och andra utökningar av ASCII
ASCII använder bara 7 bitar (128 tecken), men i en byte finns det 8 bitar. Genom att använda den återstående biten kan man utöka ASCII med 128 tecken till. Detta gjordes i en mängd olika persondatorer för att kunna stödja andra språk än engelska. Det blev dock ingen standardisering, utan olika tillverkare hittade på olika utökningar, vilket innebar problem när man skulle föra över data från ett system till ett annat.
ISO-standarden ISO 8859 kom 1987 och specificerade ett antal sådana utökningar till ASCII. ISO 8859-1 som är till för västeuropeiska språk är den mest kända, och brukar kallas för "Latin-1", men det finns flera, bland annat:
ISO 8859-1 Latin-1: västeuropeiska språk ISO 8859-2 Latin-2: östeuropeiska språk ISO 8859-3 Latin-3: sydeuropeiska språk ISO 8859-4 Latin-4: nordeuropeiska språk ISO 8859-5 Kyrilliska ISO 8859-6 Arabiska ISO 8859-7 Grekiska ISO 8859-8 Hebreiska ISO 8859-9 Latin-5: turkiska ISO 8859-10 Latin-6: nordiska och baltiska Latin-1 har blivit vanlig på Internet, t.ex. i mail, på webbsidor, och så vidare. Även Microsoft använder sig nästan av Latin-1. (De har egna kodningar som är nästan som Latin-1.)
Början på den här texten i oktal-representation av teckenkodningen Latin-1:
0000000 074 110 124 115 114 076 012 040 040 074 110 105 101 104 076 012 0000010 040 040 040 040 074 124 111 124 114 105 076 012 040 040 040 040 0000020 040 040 107 162 165 156 144 154 344 147 147 141 156 144 145 040 0000030 144 141 164 141 142 145 150 141 156 144 154 151 156 147 054 040 0000040 150 164 040 062 060 060 062 072 040 106 366 162 145 154 344 163 0000050 156 151 156 147 040 066 012Början på den här texten i teckenkodningen Latin-1 med radbrytningar utsatta:
0000000 < H T M L > \n < H E A D > \n 0000010 < T I T L E > \n 0000020 G r u n d l ä g g a n d e 0000030 d a t a b e h a n d l i n g , 0000040 h t 2 0 0 2 : F ö r e l ä s 0000050 n i n g 6 \nUNICODE / UCS
Det vore på många sätt skönt att bara använda en enda teckenkodning. Att inte behöva använda olika för olika ändamål eller på olika system, och sen behöva konvertera mellan dessa, utan att det "bara fungerar".
Unicode är ett sådant projekt, som startade som ett samarbete mellan amerikanska datorföretag på 80-talet, i synnerhet Xerox och IBM, och sen skapades ett eget Unicode Consortium. Samtidigt höll ISO på med ett liknande projekt, UCS = Universal Character Set, men blev genom Unicode-gruppens inflytande 1992 övertalat att överge sin början och anta vad Unicode gjort istället. ISO 10646:Version 2 kom att i princip bli samma teckenkodning som Unicode.
"Basplanet" av UCS består av endast 65536 tecken (16 bitar), men totalt är UCS en 31-bitars kod (över 2 miljarder tecken) och räcker gott till. Hittills har *** [Visar unicodeboken över version 3. Se även http://www.unicode.org/.]
Radbrytningar
Bland kontrolltecknen i ASCII finns bland annat ett som heter "carriage return" (CR) och ett som heter "line feed" (LF). Carriage return = vagnretur på en skrivmaskin, dvs. man går tillbaka till att skriva på början av raden. Line feed = pappersmatning ett steg framåt. För att börja skriva på början av nästa rad (= radbrytning) krävdes alltså både vagnretur och pappersmatning, och till exempel i DOS är det fortfarande så att ny rad markeras av CRLF, alltså av två kontrolltecken.
En del system har bytt konvention för att bara använda ett tecken för nyrad. I Unix används bara LF. I MacOS används bara CR. Detta är alltså en källa till olikheter även när man använder samma teckenkodning.
När man öppnar en fil i Emacs skriver den "(DOS)" eller "(Mac)" i början av moderaden för att visa det ifall filen kodar nyrader så som DOS respektive MacOS gör.
När används sådana här "rena textfiler"? Program är sådana, till exempel. Enkla textfiler, som README eller licensfiler som följer med program. Mycket mail (men det förekommer också mail i HTML).
Ett formaterat textdokument kan representeras på olika sätt.
- Binära filformat för dokumentbeskrivning (MS Word)
- Textbaserade beskrivningar av dokument (SGML, XML)
- Textbaserade beskrivningar av sidor (Postscript)
Binära filformat
MS Word (och flera andra ordbehandlare och andra officeprogram) sparar informationen i ett binärt format.
- Vanliga bokstäver och andra tecken representeras som ovan enligt någon teckenuppsättning.
- Tilläggsinformation (rubrik, fontstorlek, tabeller, ...) ligger som andra koder som inte har något med teckenkodningen att göra.
- För att redigera ett sådant dokument krävs ett program som kan just det formatet.
Textbaserade (Postscript)
Postscript är i en helt annan genre av språk, inte för beskrivning av ett dokument som sådant, utan av en utskrift.
Beskriver sidan med hjälp av matematiska formler och halvt läsbara kommandon på formen (ungefär): "Cirkel i punkt (10cm, 12cm) med radie 4cm och tjocklek 1mm. Rita den!" (Postscript är egentligen ett helt programmeringsspråk som är särskilt bra på att rita saker på papper.)
(Det allt mer populära filformatet PDF bygger på Postscript.)
Textbaserade (SGML, XML)
Ni har redan sett på XHTML som är ett uppmärkningsspråk definierat av SGML. SGML är en rätt gammal standard som klarar av rätt mycket. (Mycket mer än vad XHTML använder sig av, till exempel.) XML är en modernare "lätt-SGML" som har stöd för sånt som oftast behövs. Många nya uppmärkningsspråk bygger på XML istället för SGML.
Senast ändrad av Leif-Jöran Olsson 2002-10-03 09:11 (efter Per Starbäck).