ASCII

Från Wikipedia
Hoppa till: navigering, sök
ASCII

ASCII [’askɪ], eller American Standard Code for Information Interchange, är en teckenkodning som används för att representera bokstäver och andra tecken i datorer. Koden använder sju bitar vilket ger plats för 128 olika tecken. ASCII designades för USA:s behov och räcker inte för något annat språk än engelska, eftersom några andra bokstäver än A-Z och a-z inte ingår. ASCII-standarden publicerades första gången 1963.

Med ASCII som grund har olika utvidgningar till 8 bitar gjorts, ofta kallade utökad ASCII. Till exempel ISO/IEC 8859-serien av teckenkodningar. De äldre kodningarna i Windows (CP1250, CP1252, CP932, m.fl) och Mac OS (MacRoman, MacJapanese, m.fl) är även de utvidgningar av ASCII. Dessa utvidgningar har ersatt ASCII i användning (eftersom 8 bitar är tillgängligt överallt numera), men de följer ASCII för de tecken som ingår i ASCII.

Internet startades med ASCII och 7 bitars överföring som grund, vilket gjorde att 8-bitarskoder inte fungerade på nätet och vissa andra sammanhang, därför skapades nationella 7-bitsvarianter av ASCII i nästan alla länder, även i Storbritannien som behövde pundtecket £, och i Kanada som ville stödja franska. Dessa standarder kallas ISO/IEC 646. ASCII har samma tecken som referensversionen av ISO/IEC 646 plus 7-bitars styrkoderna i ISO/IEC 6429. Först ett gott stycke in på 1990-talet fungerade 8 bitars överföring av till exempel e-mail överallt på internet.

ASCII-utvidgningarna med 8 bitar, håller på att ersättas med Unicode, en teckenkodning som använder fler än 8 bitar, och som stöder alla språk. För att lagra Unicode i filer använder man oftast antingen UTF-8 som fungerar som en utökad ASCII (2-4 bytes för icke-ASCII-tecken), eller UTF-16 där tecknen lagras i 2-byte-sekvenser.

Normtabell[redigera | redigera wikitext]

Kodpositionerna 00 - 1F samt 7F (angivna i det hexadecimala talsystemet) används för olika styrtecken, medan de övriga används för skrivbara tecken.

ASCII
x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF
0x NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI
1x DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC IS4 IS3 IS2 IS1
2x blank  ! " # $  % & ' ( ) * + , - . /
3x 0 1 2 3 4 5 6 7 8 9  :  ; < = >  ?
4x @ A B C D E F G H I J K L M N O
5x P Q R S T U V W X Y Z [ \ ] ^ _
6x ` a b c d e f g h i j k l m n o
7x p q r s t u v w x y z { | } ~ DEL

Styrtecknen utformades på 1960-talet för den tidens behov. Framförallt var det skrivande terminaler (endast tangentbord och skrivare) med hålkortsremsa som styrde utformningen av styrtecknen. Det största problemet som är kvar idag är en otydlighet om hur LF och CR skall användas, vilket skapat olika standarder för textfiler. De skrivande terminalerna krävde CR för att gå längst till vänster och LF för att byta rad, ett av dem i taget på grund av mekaniska begränsningar (operationen krävde väsentligt längre tid än att skriva ut ett enskilt tecken). Bildskärmar har inte det problemet, så man valde till exempel för Multics och Unix att inte ha CR i textfiler, vilket gjorde dem mindre, medan till exempel TRS-80, Apple II och Mac OS valde att lämna bort LF. CP/M, DOS, Windows med flera behöll både CR och LF för radbyte. Detta ger problem vid överföring av textfiler, inklusive mjukvarukällkod, mellan systemen.

Exempel på tillämpningar då styrtecken används:

  • 00 (NUL), "Null character", betyder egentligen tecken utan funktion. Kunde användas för att skapa fördröjning i samband med långsamma skrivare. På hålremsor ger tecknet inget hål, varför koden kunde användas för att lämna block att fyllas i senare. Numera avslutar tecknet i textsträng internt i program skrivna i C med flera språk (skrivs '\0' i källkoden i C).
  • 03 (ETX), "End of Text", används ofta för att avbryta en process
  • 07 (BEL), "Bell", ringning. Klocka på fjärrskrivare, kort pip på terminaler och persondatorer, ibland en blinkning i terminalemulatorer. Klockan fanns tillgänglig på fjärrskrivare för att varna för radslut och används för varningar i många sammanhang.
  • 08 (BS), "Backspace", backsteg, tangent på tangentbordet. Kunde användas för att kunna skriva fler tecken i samma position, till exempel stryka under eller stryka över ord, används numera ofta för att radera tecknet före (bakom) markören.
  • 09 (HT), "Horizontal tab", tabtecken, gå till nästa tabgräns, finns på tangentbordet.
  • 0A (LF), "Line feed", radbyte.
  • 0C (FF), "Form feed", sidbyte.
  • 0D (CR), "Carriage return", återgång till kolumn 1, används ofta tillsammans med LF.
  • 11 (DC1), XON, flödeskontroll: fortsätt sända
  • 13 (DC3), XOFF, flödeskontroll: håll upp med sändning
  • 1A (SUB), "Substitute", ersätter felaktigt tecken, i tidiga DEC-system, CP/M och DOS (i vissa fall) anger tecknet filslut.
  • 1B (ESC), "Escape", startar särskild styrkodsekvens för en viss applikation, används till exempel för PCL och kontrollkoder för vt- och ANSI-terminaler.
  • 7F (DEL), "Delete", radera, tangent på tangentbordet, raderar ofta tecknet framför (under) markören (jfr backsteg ovan). Ursprungligen "raderat tecken" på hålremsor (hål i alla positioner).

I textfiler (inkl HTML, C och andra dataspråk) förekommer bara HT, LF, CR.

Svensk variant av kodtabell[redigera | redigera wikitext]

Eftersom de svenska tecknen saknades så fanns även två svenska varianter. Observera att å, ä och ö inte kommer i svensk bokstavsordning, något som gjorde sortering mer komplicerat och långsammare, men ökade kompatibilitet med norsk/dansk och tysk ISO-646. (Men den komplikationen finns även för engelska, då stora och små bokstäver normalt inte görs primär skillnad på i alfabetisk sortering, även om det lätt implementerades med programkoden x & 0x1F.) Styrtecknen och tecknen inom 20-3F är samma som ASCII.

ISO/IEC 646, svensk variant, endast 20-7F visade
x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF
2x blank  ! " # $  % & ' ( ) * + , - . /
3x 0 1 2 3 4 5 6 7 8 9  :  ; < = >  ?
4x @ A B C D E F G H I J K L M N O
5x P Q R S T U V W X Y Z Ä Ö Å ^ _
6x ` a b c d e f g h i j k l m n o
7x p q r s t u v w x y z ä ö å ~ DEL

Det fanns parallellt en variant av den i Sverige, där @ ersatts av É, ^ av Ü, ` av é och ~ av ü för att stödja ord som "idé" och namn med é och ü.

ISO/IEC 646, svensk variant 2, endast 20-7F visade
x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF
2x blank  ! " # $  % & ' ( ) * + , - . /
3x 0 1 2 3 4 5 6 7 8 9  :  ; < = >  ?
4x É A B C D E F G H I J K L M N O
5x P Q R S T U V W X Y Z Ä Ö Å Ü _
6x é a b c d e f g h i j k l m n o
7x p q r s t u v w x y z ä ö å ü DEL

De icke-engelska 7-bitarsvarianterna hade sina problem eftersom amerikanska system kunde behöva de tecken som saknas, till exempel vid programmering:
{ a[i]='\n'; }
blev till
ä aÄiÅ='Ön'; å

Svensk 7 bits-ASCII används delvis fortfarande inom ekonomi och redovisning. Man ser där oftast inga större behov av att stödja andra språk än svenska (och engelska i samband med internationella överföringar). Exempelvis vid överföring av pengar mellan svenska banker fungerar bara A-Ö i texten.

Se även[redigera | redigera wikitext]

Externa länkar[redigera | redigera wikitext]