Till startsidan för Jonas Webresurs

Kôñstig@ t#ckên?

1. Inledning

Den här sidan handlar om "konstiga" tecken: hur man skriver dem och hur man undviker dem. Konstiga tecken dyker ibland upp på skärmen då datorn inte förstår vad som står på en sida.

Ämnet är ganska komplicerat och innebär en hel del matematik. Jag ger därför längst ner några förslag på vidareläsning för den som vill veta mer.

2. Vad är konstiga tecken?

Alla tecken som du har på tangentbordet och som du använder i texter, i filnamn och i olika filer, går att skicka över internet. Vad som då sker är att varje tecken får en egen sifferkod, som representerar tecknet.

Fördelen med detta är att man med mycket enkla medel kan skicka siffror över nätet, medan det är betydligt krångligare att skicka tecknen som de är. Det är alltså enklare att säga till den mottagande datorn:

Använd följande lista med tecken: Teckenstandard A.
Skriv tecken med nummer fem på listan.

än att få den mottagande datorn att förstå vilket tecken det är:

Rita ett tecken som ser ut som en cirkel med en liten fnutt längst nere till höger och en prick ovanför.

Detta förutsätter alltså att din dator (och dina program) använder samma teckenstandard som mottagaren. Skulle de inte göra det kan alltså fel tecken visas och då uppstår kôñstig@ t#ckên.

Vad som är "konstigt" varierar naturligtvis från situation till situation: ett semikolon kan t.ex ställa till problem om man använder det i ett filnamn, men fungerar utmärkt på en hemsida, för att ta ett exempel.

Det är inte alltid lätt att på förhand veta vad som kommer att bli riktigt och vad som kommer att bli konstigt. Situationerna och användningsområdena är många. Men generellt sett kan man säga att man bör se upp med följande tecken:

  • Svenska och andra nationella tecken, t.ex Å, ä, ö, ñ, ô, ø
  • Kolon : och semikolon ;
  • Slash / och backslash \
  • &-tecknet
  • #-tecknet
  • Citationstecken måste vara raka och oformaterade
  • Specialtecken, som sol , stjärna, procent, dollar, pund, euro, yen, m.m är också osäkra

När det gäller hemsidor har det länge varit nödvändigt för de som använder Html att översätta svenska tecken, så att alla kan läsa texten på sidan. Å översätts t.ex med Å, som är vad man brukar kalla en umlaut.

Översättningen fungerar eftersom webbläsarna tolkar tecknen på samma sätt. De använder alltså samma teckenstandard.

3. Hur fungerar en teckenstandard?

Vi tänker oss nu att vi skall omtolka alla bokstäver i alfabetet med en mycket enkel sifferkod. Hur gör vi det? Jo, vi väljer ett system där siffran 1 står för bokstaven A, siffran 2 står för B o.s.v fram till talet 29, som får stå för Ö.

Men vi vill också kunna använda små bokstäver så därför låter vi talet 31 står för a, 32 står för b o.s.v fram till talet 58, som står för ö.

Med endast 58 olika sifferkoder skulle vi alltså kunna representera alla bokstäver i alfabetet. På ungefär samma sätt fungerar alla de sifferkoder som finns på internet. Naturligtvis är de lite mer komplexa, men principen är densamma.

Sifferkoderna på internet är inte decimala, som i exemplet ovan, utan vanligtvis hexadecimala. Det betyder att de inte har basen 10, som decimalsystemet, utan basen 16.

Vissa äldre system är i stället oktala, vilket betyder att de har basen 8, men principen är (ungefär) densamma som för hexadecimaler.

Du vet ju att man med 8 bitar kan representera 256 tecken, eftersom 28 blir just 256. Därför använder de flesta äldre kodsystem just 256 olika sifferkoder. Det finns också ännu äldre system som bara använder 7 bitar och därför bara kan representera 128 olika tecken.

Nyare teckenstandarder kan representera 216 eller ännu fler tecken. Är du osäker på hur matematiken fungerar rekommenderar jag dig att läsa sidan Bitar och bytes. Gå dit >

Ascii är en av de äldsta teckenstandarderna. I takt med att internet har byggts ut har också antalet standarder ökat. Idag finns mängder av olika och delvis konkurrerande standarder. Jag skall nu berätta lite om några av dem.

4. Ascii

Ett av de allra första och mest använda kodsystemen är Ascii, som står för "American Standard Code for Information Interchange". Det är egentligen en hel familj av olika varianter, så det är lite svårt att säga exakt vilka tecken som ingår i den.

Det finns dock en amerikansk version, som brukar anges som övergripande standard för Ascii. Den kallas för US-ASCII och innehåller 128 tecken. Det är alltså en 7-bitarsvariant. Namn som 8-bitars Ascii förekommer, men är då bara utökningar av 7-bitarsvarianten. Us-Ascii innehåller följande tecken:

! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~

Som du ser finns inga svenska tecken med och det finns därför också en svensk variant av Ascii. Du ser också att tabellen bara innehåller 95 olika tecken (det första "tecknet" är mellanslag). Anledningen till att det inte finns fler tecken är att de andra sifferkoderna används för att ange radbrytningar, tabbtecken och andra "dolda" tecken.

För att skilja mellan synliga och dolda tecken pratar man ibland om de tecken som syns på skärmen som glyfer (glyphs). Ett svenskt ord skulle kunna vara "teckenbild". Termen har man hämtat från lingvistiken.

Läs mer om Ascii här: www.asciitabell.se

5. ISO 8859-1

När man började göra hemsidor upptäckte man ganska snart att Ascii-standarden inte räckte till. Man gjorde därför flera utökningar och enades till slut om den som kallas ISO-8859-1.

ISO-8859-1 kan representera 256 tecken, från noll till 255. Platserna 0-127 är identiska med US-Ascii och dessutom finns alltså möjligheten att visa ytterligare 129 tecken. Jag har gjort en särskild sida för ISO-8859-1, som heter just iso88591.html, där jag visar vilka tecken den kan representera. Ta dig gärna en titt innan du läser vidare.

Platserna 0-31 och 127-159 används för olika styrkoder, t.ex radbrytning och mellanslag. Platserna 32-126 och 160-255 används för glyfer av olika slag. 95 nya tecken kan alltså visas med denna standard.

ISO-8859-1 kallas ibland även för Latin-1 eller Western-1 och det beror på att den innehåller just "västerländska" tecken. ISO-8859-5 är en standard för kyrilliska (=ryska) bokstäver och ISO-8859-7 en standard för grekiska bokstäver.

I din webbläsare finns förmodligen en ganska lång lista med sådana här standarder, som du hittar bland menyerna. Teckenkoder brukar de kallas.

Inte alla standarder är dock ISO-märkta. ISO är ju det internationella standardiseringsorganet, men det finns flera andra organ som har egna standarder. Microsoft har t.ex egna system för flera av sina program.

Mac-varianten av ISO-8859-1 skiljer sig på inte mindre än 15 punkter, närmare bestämt på platserna 166, 173, 178, 179, 185, 188, 189, 190, 208, 215, 221, 222, 240, 253 och 254. MS-DOS har också en egen variant av denna standard.

ISO-8859-1 var standard på webben under många år. Men eftersom bara 256 olika tecken kan visas för varje variant av denna standard, innebär det att man måste byta mellan olika varianter då man vill läsa en sida med latinska, kyrilliska och andra tecken.

Därför har man utvecklat mer omfattande teckenstandarder.

6. Unicode

Unicode är tänkt att ersätta flera hundra äldre kodningar och rymmer bl.a alla tecken i Ascii och ISO-8859-1

Projektet startades redan 1980 av Apple och Xerox, men det var först 1991 som Unicodekonsortiet bildades. I praktiken slog sedan inte denna teckenstandard igenom förrän några år in på 2000-talet.

Syftet med Unicode är att varje teckenglyf som finns i världens alla skriftsystem ska tilldelas en teckenkod. Här finns latinska, kyrilliska, grekiska, hebreiska, arabiska, olika indiska, kinesiska, japanska och koreanska tecken, samt tecken från utdöda språk.

Unicode rymmer också runor, matematiska och tekniska symboler, pilar, programspråkstecken, astrologiska tecken, religiösa symboler, osv.

För att kunna få med så många tecken använder man 216 (65.536) olika platser i 17 olika plan, vilket ger en kapacitet på drygt 1,1 miljoner tecken. Exakt hur matematiken ser ut går jag inte igenom här utan läs mer bland länkarna nedan.

Eftersom man inte alltid har behov av att få med alla tecken finns dessutom olika varianter av denna standard, med beteckningar som UTF-8, UTF-16 och UTF-32.

UTF står för "Unicode Transformation Format" eller "universellt teckenkodningsformat". UTF-8 är idag den vanligaste teckenkodningen på internet.

7. UCS

UCS står för "Universal Character Set" och utgör teckenuppsättningen i ISO-10646. Denna är helt och hållet synkroniserad med teckenuppsättningen i Unicode och representeras vanligtvis enligt UTF-8 eller UTF-16.

UCS nämns ofta i specifikationerna för Html, CSS och andra webbstandarder. Man skriver ju i Html-dokument ungefär så här:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

"Character set" eller charset talar om hur dokumentet skall överföras och hur mottagaren skall tolka datan så att dokumentet sätts ihop korrekt.

Hur vet då webbläsaren vilka tecken som ingår? Jo, UTF-8 är rekommendationen och webbläsarna använder denna teckenuppsättning, eftersom den (eller varianter av den) också används internt i de flesta moderna operativsystem.

UCS använder också några termer som ser ut så här:

ISO-8859-1 &#197; Å &Aring;
Character reference Character code Character Character name

Character reference är alltså den teckenstandard man använder. ISO-8859-1 och UTF-8 är alltså två sådana. Character code är teckenkoden som tecknet har i standarden.

Det man kallar character är detsamma som ett tecken eller glyf. I Html finns också ett character name, en umlaut, som man kan använda då man kodar hemsidor. Det ger samma resultat som teckenkoden.

På sidan ISO-8859-1 har jag gjort en sammanställning av standarden enligt denna princip.

8. MIME

MIME står för "Multipurpose Internet Mail Extensions" och är en tecken- och överföringsstandard för framförallt e-post.

För att MIME skall fungera måste det aktiveras. Det görs normalt automatiskt i det program du använder för att skicka e-post. När en fil skickas till eller från dig, lägger programmet till en liten notis om vilken teckenstandard som använts.

När filen når fram till mottagaren och öppnas läser programmet notisen och avkodar filen korrekt, så att alla tecken blir "normala". Ibland fungerar det inte och då ser man konstiga tecken i e-posten.

I stället för "Häftigt!" står det konstiga tecken, d.v.s "Hftigt!", "Hdftigt!", "H=E4f,tigt!", "H{ftigt!", "H&auml;ftigt!" eller något annat lika svårläst.

MIME gör det också möjligt att specificera en filtyp ("media type"), t.ex om det är en textfil eller bildfil.

I de flesta e-postprogram kan man själv ställa in vilken överföringsstandard man vill använda. Man får instruktioner om vilken alternativ inställning man skall använda, om standarden frångås, av den som sköter nätverket, t.ex internetleverantören.

9. Kinesiska och andra tecken

Den som vill publicera andra än latinska bokstäver på sin hemsida kan försöka använda sig av en utökad teckenstandard. t.ex. UTF-8. Men då krävs det att den som skall läsa sidan har en dator som kan förstå teckenstandarden och visa de tecken som krävs.

Problemet har hittills varit att många besökare har gamla operativsystem, med följd att tecknen inte visas. Förhoppningsvis är detta ett övergående problem.

Men det finns några sätt att komma runt problemet:

Använd bilder
För att skapa vilket tecken eller vilken symbol som helst kan man skapa bilder, t.ex i ett ritprogram. GIF-formatet fungerar bra.

Nackdelar är att man inte kan hantera längre texter. Det tar även lång tid att utföra, speciellt om man har många tecken. Om besökaren vill spara filen måste han eller hon även spara bilderna och ge dem rätt filnamn.

Skapa en PDF-fil
Det kanske bästa sättet är att göra om hela dokumentet till en PDF-fil. Fördelen med PDF är att det är en standard som stöds av många olika operativsystem. Med hjälp av Acrobat Reader kan man öppna filen i webbläsaren.

En annan fördel är att de typsnitt man använt finns med i PDF-dokumentet så alla som läser det kommer att se filen så som man tänkt.

PDF-filer kan man skapa direkt inifrån Mac OS X och med program som Adobe Acrobat. Du hittar programlänkar från min sida med surftips. Läs mer >

10. Vidareläsning

Internet RFC/STD/FYI/BCP Archives: www.faqs.org/rfcs
Jukka Korpelas tutorial: www.cs.tut.fi/%7Ejkorpela/chars
Knowledge Base at Indiana University: kb.iu.edu/data/menu.html
Unicode på www.unicode.org
WDG Reference section: www.htmlhelp.com/reference
What Is: whatis.techtarget.com
W3C på www.w3.org/International


Den här sidan är en del av Jonas Webresurs - www.jonasweb.nu - copyright © 1998-2011