Kapitel 5 Teckenrepresentation 5.1 Teckenkoder När en vanlig text (plain text) lagras i en fil eller ska föras över mellan datorer eller program måste en viss teckenkodning användas, dvs. ett sätt att ge varje tecken en numerisk kod. Ofta innebär detta att varje tecken lagras i en byte och att koden därför är ett värde från 0 till 255, men för teckenkodningar med många tecken kan det krävas fler bytes för ett tecken. 5.2 Att ange teckenkodning Det finns många olika teckenkodningar, vilket kan ställa till problem. På samma system (i samma operativsystem; i samma program) använder man oftast samma teckenkodning genomgående och råkar inte ut för några problem. Trycker man på en tangent som det står Å på får man naturligt nog ett tecken Å på skärmen och sparar man det i en fil så kommer samma tecken fram nästa gång man tittar på det. Det besvärliga kommer istället när man ska föra över data mellan system som använder olika teckenkodningar. Då finns det risk för att den kod man skickar iväg som betyder Å i ens egen system betyder nåt annat på det andra systemet. Det är därför viktigt a) att man använder en teckenkodning som mottagande system känner till, och b) att man talar om vilken teckenkodning man har använt. Då får mottagaren(s system) möjlighet att tolka informationen rätt. Oftast fungerar sånt automatiskt. Detta görs med standardiserade beteckningar för olika teckenkodningar, och det är organisationen IANA (Internet Assigned Numbers Authority) som håller i dessa beteckningar, precis som de håller i ett antal liknande standarder som används på Internet. I flera sammanhang när text skickas över nätet, t. ex. för datorpost och över webben, så används dessa standardiserade beteckningar, så istället för att bara texten skickas över så skickas det även med en bruksanvisning som talar om vad det är för slags text så att mottagaren vet hur det ska tolkas. 5.3 ASCII En traditionell teckenkodning med stor genomslagskraft är ASCII (American Standard Code for Information Interchange). Hos IANA kan den bland annat kallas ASCII eller US-ASCII. (Det finns ofta flera IANA-namn på samma teckenkodning.) Den omfattar koder från 0 till 127 och visas i figur 5.1. ASCII är en amerikansk och internationell standard från 1960-talet (dagens version är i praktiken ekvivalent med den från 1968) som snabbt antogs av de flesta 1 och fortfarande används ofta. Observera att ASCII-koderna går från 0 127, medan det i en byte finns plats för dubbelt så många värden (256). Det är därför lätt att göra utökningar av ASCII med fler tecken och ändå få rum med ett tecken per byte, och det finns också en stor mängd sådana utökningar där även koderna 128 255 har fått tecken tilldelade sig. I många fall kan man höra även sådana teckenkodningar kallas för ASCII eller»extended ASCII«. Det blir lätt förvirring med teckenkoder om samma namn används om flera olika saker så kalla bara 1 Ett viktigt undantag var IBM som länge istället använde sina egna EBCDIC-teckenkodningar. 47
5. TECKENREPRESENTATION 32 33! 34 " 35 # 36 $ 37 % 38 & 39 ' 40 ( 41 ) 42 * 43 + 44, 45-46. 47 / 48 0 49 1 50 2 51 3 52 4 53 5 54 6 55 7 56 8 57 9 58 : 59 ; 60 < 61 = 62 > 63? 64 @ 65 A 66 B 67 C 68 D 69 E 70 F 71 G 72 H 73 I 74 J 75 K 76 L 77 M 78 N 79 O 80 P 81 Q 82 R 83 S 84 T 85 U 86 V 87 W 88 X 89 Y 90 Z 91 [ 92 & 93 ] 94 ^ 95 _ 96 97 a 98 b 99 c 100 d 101 e 102 f 103 g 104 h 105 i 106 j 107 k 108 l 109 m 110 n 111 o 112 p 113 q 114 r 115 s 116 t 117 u 118 v 119 w 120 x 121 y 122 z 123 { 124 125 } 126 ~ 127 DEL Figur 5.1: ASCII-tecken 32 127. Kod 32 är mellanslag. Kod 127 är inte ett egentligt tecken utan»kontrolltecknet«delete. Även kod 0 till 31 är olika kontrolltecken som inte visas ovan. ASCII för ASCII och använd specifika namn för de olika utökningar av ASCII som finns! 5.4 Kontrolltecken Kontrolltecken är sådana tecken som inte motsvarar något grafiskt tecken som kan skrivas ut på papper eller på en skärm, utan istället är en kod som har någon särskild annan betydelse när en text lagras i en fil, när tecken ska skickas från en terminal till en dator eller från en dator till en terminal eller liknande. I ASCII är tecken 0 31 samt 127 kontrolltecken. Ett exempel är tecken 7, [BEL] = Bell, med beskrivningen A control character that is used when there is a need to call for attention; it may control alarm or attention devices. Om man skickar tecken nummer 7 till en terminal så kan den svara med att plinga eller tuta. Normalt lagrar man inte detta tecken i sina textfiler. De flesta av dessa kontrolltecken används nästan inte alls (längre). Några som har effekten att flytta på markören är bland de mest använda, framför allt: 9, [HT] = Horizontal tabulation:»advances the active position to the next pre-determined character position on the same line«(= TAB) 10, [LF] = Line feed:»advances the active position to the same character position of the next line«12, [FF] = Form feed:»advances the active position to the same character position on a predetermined line of the next form or page«13, [CR] = Carriage return:»moves the active position to the first character position on the same line«med beskrivningarna ovan behövs två tecken för att en text ska fortsätta på början av nästa rad: [CR] och [LF]. [CR] (vagnretur) för att börja skriva på början av raden och [LF] (radframmatning) för att gå fram till nästa rad. Konventionellt ges dessa i just den ordningen [CR] + [LF] och kombinationen kallas ibland tillsammans för CRLF. I Unix används dock bara ett tecken, [LF], för att börja på en ny rad, så man har tolkat om detta teckens betydelse. MS Windows använder däremot det traditionella [CR]+[LF] och det brukar även krävas vid kommunikation mellan datorer på nätet. Dessutom är det vanligt i en del sammanhang att en sådan kod som ursprungligen används för att beteckna ny rad (oavsett vilken variant man använder) istället används för att indikera nytt stycke. Dessa skillnader gör att vanliga textfiler faktiskt kan skilja sig åt mellan olika system även om både använder ASCII. Kontrolltecknet [HT] ovan kallas oftare för TAB och har en egen tangent på tangentbordet. Ett annat kontrolltecken som har en egen tangent är [ESC] (tecken 27) som används till många olika saker. I övrigt kan man skicka kontrolltecken från terminalen genom att använda Ctrl-tangenten. Med Ctrl-A skickar man tecken 1, Ctrl-B ger tecken 2, osv., och i en del sammanhang betecknas dessa tecken med ^A, ^B osv. Eftersom G är den sjunde bokstaven är alltså ^G tecken 7, dvs. [BEL] (tuttecknet). 5.5 ISO 8859-* Eftersom ASCII har fått sådan genomslagskraft kan man vara rätt säker på att A är kodat som 65, B som 66 osv. som i figuren i nästan alla sammanhang, trots att detta egentligen är rätt godtyckligt och hade kunnat vara på något annat sätt. När det gäller tecken som inte finns med i ASCII kan man var inte vara lika säker, och det finns en 48
Microsoft Windows mängd olika teckenkodningar att välja på med olika uppsättningar tecken i. Internationella standardiseringsorganisationen ISO har definierat en serie standardiserade teckenkodningar ISO 8859-1, ISO 8859-2,... ISO 8859-16 2, och några av dessa, i synnerhet den första, används mycket. Hos IANA finns dessa registrerade som ISO-8859-1, ISO-8859-2 osv. De är alla utökningar av ASCII, dvs. är ekvivalenta med ASCII för kod 0 till 127. Dessutom använder alla tecken 128 159 till kontrolltecken 3 och tecken 160 till NBSP = non-breaking space, ett hårt mellanslag där det inte får bli radbrott. Det är alltså bara koderna 161 255 som skiljer de olika teckenkodningarna åt. Första halvan av ISO-8859-1 är alltså identisk med US-ASCII och därefter följer en del kontrollkoder. I figur 5.2 visas det som återstår. ISO 8859-1 är särskilt tänkt för att klara av västeuropeiska språk. De övriga i serien kommer de flesta av er förmodligen inte att behöva. De är: ISO 8859-2 (Latin2) central- och östeuropeiska språk med latinska alfabet (med t. ex. Ł, ś, ž) ISO 8859-3 (Latin3) sydeuropeiska språk ISO 8859-4 (Latin4) nordeuropeiska språk ISO 8859-5 kyrilliskt alfabet ISO 8859-6 arabiskt alfabet ISO 8859-7 grekiskt alfabet ISO 8859-8 hebreiskt alfabet ISO 8859-9 (Latin5) turkiska ISO 8859-10 (Latin6) nordiska språk ISO 8859-11 thai ISO 8859-13 (Latin7)»Baltic rim«iso 8859-14 (Latin8) keltiska språk ISO 8859-15 (Latin9) en revidering av Latin1 ISO 8859-16 (Latin10) sydösteuropeiska språk Observera att de som är till för latinskt alfabet även kallas Latin siffra, i synnerhet är Latin1 = ISO-8859-1. Observera även att eftersom alla dessa innehåller hela ASCII så finns sådant som de latinska bokstäverna A Z även i de teckenkodningar som framförallt är till för helt andra alfabeten. 2 Utom ISO 8859-12 som inte finns. 3 Strikt sett finns det en skillnad. ISO-standarderna ISO 8859-1 osv. definierar bara skrivbara tecken och inga kontrolltecken, men i det som IANA kallar ISO-8859-1 osv. är även ett antal kontrolltecken definierade. 5.6 Microsoft Windows Microsoft använder en del egna utökningar av ISO-8859-familjen. Den viktigaste av dessa är windows-1252 som bygger på ISO 8859-1. Den innehåller alla skrivtecken som ISO-8859-1 gör, men ersätter en del av kontrolltecknen 128 159 med ytterligare skrivbara tecken, t. ex. C,,, ž och Ÿ. Den kallas ibland även för WinLatin1, men windows-1252 är det enda namn för denna teckenkodning som Microsoft har registrerat hos IANA. I MS Windows-världen kallas denna teckenkodning märkligt nog ibland för»ansi«(såsom den amerikanska standardiseringsorganisationen American National Standards Institute), trots att det inte är någon ANSI-standard! Eftersom den liknar ISO-8859-1 så mycket finns det risk för sammanblandning. Ibland sprids dokument från MS Windows-världen med felaktiga etiketter som påstår att texterna är skrivna med ISO-8859-1 fast det egentligen är windows-1252 vilket kan ställa till med problem. 5.7 ISO 10646 = UCS Unicode Om man vill använda t. ex. såväl hebreiska som ryska tecken i samma fil så duger inte någon av ovannämnda teckenkodningar. Det finns andra språk som ingen av dessa duger till, eftersom ISO-8859-serien bara är till för språk med alfabetiska skriftsystem. Där finns t. ex. inte stavelsetecken som hangul för koreanska eller hiragana och katakana för japanska, och framförallt finns där inte ideografiska tecken. Det finns tusentals ideografiska han-tecken för kinesiska, japanska och koreanska. Numer så används teckenkodningen Unicode allt mer, med vilken det är tänkt att man ska kunna beteckna alla naturliga språk (levande och döda), samt dessutom en stor mängd matematiska och andra symboler. Egentligen fins det två olika projekt: Det ena är en standard från standardiseringsorganisationen ISO: UCS = Universal Character Set, eller ISO 10646. Det andra är Unicode från ett konsortium av datorföretag. De båda standarderna har dock anpassat sig till varandra, så i de flesta bemärkelser 49
5. TECKENREPRESENTATION 160 161 162 163 164 165 166 167 168 169 170 ª 171 «172 173-174 175 176 177 ± 178 2 179 3 180 181 µ 182 183 184 185 1 186 º 187» 188 ¼ 189 ½ 190 ¾ 191 192 À 193 Á 194  195 à 196 Ä 197 Å 198 Æ 199 Ç 200 È 201 É 202 Ê 203 Ë 204 Ì 205 Í 206 Î 207 Ï 208 Ð 209 Ñ 210 Ò 211 Ó 212 Ô 213 Õ 214 Ö 215 216 Ø 217 Ù 218 Ú 219 Û 220 Ü 221 Ý 222 Þ 223 ß 224 à 225 á 226 â 227 ã 228 ä 229 å 230 æ 231 ç 232 è 233 é 234 ê 235 ë 236 ì 237 í 238 î 239 ï 240 ð 241 ñ 242 ò 243 ó 244 ô 245 õ 246 ö 247 248 ø 249 ù 250 ú 251 û 252 ü 253 ý 254 þ 255 ÿ Figur 5.2: Tecken 160 255 i ISO-8859-1. Tecken 160 är nbsp = non-breaking space. Tecken 173 är shy = soft hyphen en möjlig avstavningspunkt där - ska visas om det blir avstavning där, men som annars inte syns. är det numer samma sak och det är Unicode som det oftast talas om. Nuvarande 4 versionen Unicode 4.1 har >97 000 koder (däribland över 70 000 ideografiska tecken) Standarden utökas allteftersom med nya tecken. (I version 4.1 tillkom t. ex. fornpersiska och koptiska tecken.) Det finns plats för drygt en miljon tecken. (Den högsta tillåtna koden är 1 114 111.) Förutom den numeriska koden innehåller Unicode även bland annat Ett namn för varje tecken (som LATIN CAPI- TAL LETTER A WITH RING ABOVE, ARABIC QUESTION MARK och ORIYA DIGIT SEVEN) Information om vad för slags tecken de olika tecknen är (alfabetiska, siffror, interpunktion,... ) Information om vilka tecken som skrivs från höger till vänster och vilka som skrivs från vänster till höger Information om vilka tecken som motsvarar varandra som små och stora bokstäver Tecknen är indelade i 17 plan med plats för 65 536 tecken i varje. Planen är numrerade från 0 till 16. Plan 0 = BMP = Basic Multilingual Plane. Här ligger de vanligaste tecknen. Koderna 0 255 är som för ISO-8859-1 (så 0 127 är som för ASCII). Sen följer bokstäver, stavelsetecken och ideografiska tecken, samt diverse symboler. Den största delen är ideografiska tecken och det finns även ett block med några tusen tecken som är reserverade för privat användning. Plan 1, SMP = Supplementary Multilingual Plane. Här finns diverse tecken som används 4 När detta skrevs. En ny version 5.0.0 är under uppseglande och boken som beskriver den är under utgivning. mindre ofta, bland annat utdöda skriftsystem som linear B, hieroglyfer, m. m. Plan 2, SIP = Supplementary Ideographic Plane. Ytterligare ideografiska han-tecken. Plan 3 13 används ej än så länge. Plan 14, SSP = Supplementary Specialpurpose Plane. Plan 15 och 16 för privat användning. (Från början skulle ISO 10646 innehålla 32 768 olika plan, medan Unicode-konsortiet tänkte sig att det skulle räcka med ett plan. Kompromissen på»halva«vägen blev 17 plan.) 5.7.1 Kombinerande tecken I Unicode finns kombinerande tecken som kombineras med föregående tecken, genom att ge det en accent. Exempel: a +. = ạ a + ˇ = ǎ a + + ˇ = ˇá Dessutom finns det en del färdiga hopsatta tecken. För att lagra ä kan man använda tecken nummer 228 (LATIN SMALL LETTER A WITH DIAERE- SIS) eller två»tecken«efter varann: tecken 97 (LATIN SMALL LETTER A) tecken 776 (COMBINING DIAERESIS) Tecknen får kombineras hursomhelst, så det går att med Unicode skriva t. ex.. som tecken 8240 (PER MILLE SIGN) följt av tecken 803 (COMBINING DOT BELOW), trots att något sådant tecken troligen inte har använts tidigare i något språk. 5.7.2 Att lagra Unicode i filer Eftersom det finns långt fler än 256 tecken krävs det flera bytes per tecken. Detta är ett skäl till att 50
Vad är olika tecken? Unicode är besvärligare att hantera än t. ex. ASCII och ISO 8859-1. För att spara utrymme så lagrar man ofta Unicode-text på ett sådant sätt så att olika tecken tar olika mycket plats att lagra. Några av sätten att lagra Unicode-text är följande: UTF-32 fyra bytes per tecken UTF-16 två bytes per tecken för BMP, fyra annars UTF-8 en byte per tecken för ASCII, två till fyra för övriga UTF-32 Med UTF-32 lagras alla tecken i fyra bytes var. Det är på sitt sätt enklast att hantera eftersom alla tecken behandlas lika, oavsett om det är ett A eller ett fornpersiskt tecken, men eftersom det oftast är ett stort slöseri med utrymme så används det inte så mycket. UTF-16 Från början tänkte sig Unicode att det skulle räcka med ett plan (det som nu är BMP), och då skulle det räcka med två bytes för varje tecken. (Två bytes kan ha 256 256 = 65 536 olika värden.) Med UTF- 16 använder man två bytes för varje tecken i BMP. Tricket som gör att detta är möjligt är att en viss mängd koder i BMP (55 296 57 343, totalt 2 048 olika koder) inte används till några tecken utan är reserverade för detta ändamål. När man behöver ett tecken från något av de 16 andra planen kombinerar man två av dessa reserverade koder efter varann, varför man kan koda dessa mer ovanliga tecken med fyra bytes. En extra komplikation är att det finns två möjligheter för i vilken ordning dessa två bytes ska lagras. Dessa kallas UTF-16BE och UTF-16LE. (BE = Big- Endian. LE = Little-Endian.) Så om man ska lagra t. ex. ett eurotecken (C) som har koden 8 364 så delas den upp i 32 och 172 eftersom 32 256 + 172 = 8 364. Med UTF-16BE lagras detta som 172, 32 och med UTF-16LE som 32, 172. I filer som bara sägs vara UTF-16 ska det finnas en särskild markör som talar om vilken av de två varianterna som används. UTF-8 Här har man tagit idén att koda de vanligare tecknen kortare ännu längre: Kod 0 127: 1 byte (ASCII) Kod 128 2 047: 2 bytes Kod 2 048 65 535: 3 bytes Kod 65 536 1 114 111: 4 bytes (utanför BMP) Om en fil bara innehåller ASCII-tecken (kod 0 127) så blir det alltså precis likadant med US-ASCII som med UTF-8. Endast koderna 128 255 används i flerbyteskombinationerna, så varje förekomst av t. ex. kod 65 i ens fil är samma ASCII-tecken (A). Kommunikation över Internet använder allt oftare UTF-8. Om man ser text som ser ut»sã hã r«så är det på grund av trassel med teckenkodning. Så ser UTF-8-text ut om den tolkas som ISO-8859-1. Observera att bokstäverna a z ser likadana ut (de ingår ju i ASCII) medan åäö lagras i två bytes var med UTF-8 och dessa två bytes har här felaktigt tolkats som något helt annat. Skillnad på tecken och bytes Traditionellt har teckenfiler haft ett tecken = en byte, men med kodningar som UTF-8 och UTF-16 gäller inte detta, utan antalet bytes kan vara högre än antal tecken. Det är därför wc i GNU har fått en ny väljare -m som får den att verkligen räkna tecken och inte bytes när man använder en sådan teckenkodning. (Väljaren -c var redan upptagen för att räkna bytes sedan urminnes tider.) 5.8 Vad är olika tecken? Det är inte i första hand det grafiska utseendet som avgör vad som ska räknas som varianter av samma tecken eller som ska räknas som olika tecken. T. ex. är a och a samma tecken (I Unicode LATIN SMALL LETTER A, tecken 97) trots att de ser olika ut. Däremot är svenska A och grekiska A olika tecken (tecken 65: LATIN CAPITAL LETTER A respektive tecken 913: GREEK CAPITAL LETTER ALPHA) trots att de (beroende på typsnitt) kan se likadana ut. (Att de är olika märks om inte annat på motsvarande gemena bokstäver a och α.) 51
5. TECKENREPRESENTATION quote quote Figur 5.3: Hur tecknen för startcitat och slutcitat skiljer sig åt skiljer sig i olika typsnitt. De två exemplen här är Helvetica och Palatino. Samma tecken kan också se olika ut i olika positioner i texten. Ett f följt av ett i blir t. ex. ofta en sammanhängande ligatur fi (se på nära håll!), men det räknas ändå som två olika tecken. Många arabiska tecken har olika former beroende på om de kommer i början, mitten eller slutet av ett ord. Termen glyf används ibland för ett specifikt grafiskt utseende, till skillnad från den mer abstrakta termen tecken. 5.8.1 Flera tecken räknas som samma Är $ och Š två olika tecken eller är det två olika grafiska utseenden av samma tecken»dollar«? Det beror på. Med Unicode finns det möjlighet att göra alla åtskillnader som görs när man sätter text i tryck, men med t. ex. ASCII är det mer som att skriva på en skrivmaskin och då finns inte alls så många olika tecken. Där finns t. ex. bara ett tecken - trots att man i tryck skiljer på olika långa sådana streck t. ex. i abc-bok (kortare bindestreck) och kl. 13 15 (längre intervalltecken). Ett exempel som förtjänar särskild uppmärksamhet är citattecken. På t. ex. engelska så används olika citattecken före och efter citat. Det kan se ut like this eller like this. Hur skillnaden ser ut skiljer sig åt i olika typsnitt. I figur 5.3 finns ett par rätt olika exempel. På skrivmaskiner nöjde man sig dock med raka neutrala citattecken som skulle gå lika bra att använda både före och efter, och så är det i ASCII och t. ex. Latin1 också: "like this" eller 'like this'. (Citattecknen är tecken 34 och 39 i figur 5.1.) I ASCII finns det dock även grav accent (tecken nummer 96 i figuren). Ibland kan man stöta på text som använder den som citatstart så det är skrivet `like this'. Detta ser rätt skevt ut, och är inte att rekommendera, men förr fanns det en hel del fonter där tecknet ' inte var rakt, utan vinklat, så då såg det helt OK ut. En apostrof, som i»don t«är samma tecken som ett slutcitattecken. I Unicode beskrivs tecknet som RIGHT SINGLE QUOTATION MARK, men det görs ändå klart att detta är att föredra även för apostrof. På svenska används för övrigt detta tecken både före och efter citat: så här. 5.9 Att hantera filer med olika teckenkodning En fil med vanlig text har i allmänhet ingen information i sig om vilket teckenkodning den använder. En fil med två bytes, 241 och 214, kanske är en ISO-8859-1-fil med texten»ñö«, eller kanske en ISO-8859-7-fil med de grekiska bokstäverna»ρφ«eller kanske en ISO-8859-5-fil med de kyrilliska bokstäverna» ж«5 eller något helt annat! Normalt så håller man sig till en teckenkodning, men när man inte gör det får man själv lov att hålla rätt på detta! Vilken ens normala teckenkodning är talar man om med sin locale-inställning, tillsammans med språk. 5.9.1 Olika teckenkodningar i Emacs Emacs använder en egen teckenkodning internt och kan läsa och skriva filer med flera olika teckenkodningar. Alla buffertar i Emacs får innehålla vilka tecken som helst som Emacs kan hantera. Det är först när man försöker spara en fil som det krävs att alla tecken i bufferten finns med i den teckenkodning som man ska spara filen med. Om det inte är så talar Emacs om detta och låter en välja en annan teckenkodning. Man kan också tala om explicit vilken teckenkodning man vill använda innan man sparar genom att använda C-x RET f. Till vänster i informationsraden anger Emacs vilken teckenkodning som i första hand ska användas när en viss buffert sparas till fil (1 = ISO-8859-1, u = Unicode,... ). Om Emacs inte gissar rätt själv på vilken teckenkodning en viss fil har kan man ange teckenkodning explicit precis innan man öppnar filen. Det gör man med C-x RET c som anger vilken teckenkodning Emacs ska använda för det kommando som följer omedelbart efteråt. 5 Vilket betyder igelkott på ryska! 52
Hos oss Dessa kommandon och mer finns i menyn Options Mule (Multilingual environment). 5.9.2 Att konvertera mellan teckenkodningar Ett program som konverterar mellan teckenkodningar är iconv. Det kan användas som iconv -f utf-8 -t latin1 foo.txt för att konvertera filen foo.txt från UTF-8 till Latin1. Som så ofta går det att utelämna argumentet varpå input istället hämtas från standard input. 5.10 Att skriva andra tecken i Emacs Om man vill skriva helt andra tecken i Emacs, som t. ex. ryska eller kinesiska tecken så behöver man en särskild inputmetod. Annars behöver man inte detta. Detta kommer inte att vara med i labben och nämns här mest som referens ifall du får ett sådant behov senare. Inputmetoden definierar vilka tecken som genereras när man trycker på olika tangenter. Funktionen Select Input Method finns i menyn Options Mule (Multilingual environment) och där finner man även ett kommando för att beskriva en viss inputmetod (C-h I). Det finns olika slags inputmetoder. T. ex.: Prefix- och postfixmetoder där man framförallt kan skriva bokstäver med accenter genom att skriva något särskilt före respektive efter bokstaven. Inputmetoden german-prefix är t. ex. till för att skriva tyska även om man inte har ett tyskt tangentbord och gör därför så att "A genererar Ä men även så att "s genererar ß. Metoder som bygger på tangentbordslayouter. Om man t. ex. kan layouten på ett vanligt ryskt tangentbord, kan man använda inputmetoden cyrillic-jcuken för att tangenterna ska generera det kyrilliska tecken som tangenten på motsvarande position ger på ett ryskt tangentbord. Metoder som bygger på translitterering. Med cyrillic-translit trycker man t. ex. på tangenterna»shostakovich«för att skriva»xostakoviq«. 6 För att skriva ideogram, t. ex. kinesiska, finns det dels inputmetoder där man först anger ordets fonetik, dels sådana där man först anger några av delarna i det grafiska tecknet. I båda fallen finns det i allmänhet flera möjliga tecken som kan passa in. Man får upp en lista över sådana från vilken man får välja. 5.11 Hos oss På våra GNU/Linux-datorer används fortfarande ISO-8859-1 som den normala teckenuppsättningen. Den teckenkodning man föredrar finns med i ens locale-inställningar, och om man inte har ändrat den är det LANG=en_US.ISO8859-1. Det hindrar inte att ni även kan hantera filer med andra teckenkodningar, och så småningom lär vi gå över till UTF-8 som standard istället. (Om du kör GNU/Linux någonannanstans, t. ex. installerar själv hemma, så kommer det antagligen vara uppsatt med UTF-8 som det normala istället.) 6 Detta följer en engelsk translitterering. På svenska skulle man oftast skriva»sjostakovitj«, och i vetenskapliga sammanhang translittererar man»šostakovič«. 53