1 # Når «på» blir «pÃ¥»: Et reservoar av tegn sett fra depotet
2 :author: Thomas Sødring og Petter Reinholdtsen
4 // https://pad.efn.no/p/arkiv-tegnsett
6 De færreste av oss tenker over hva som skjer dypere i datamaskinen
7 mens vi sitter der og skriver noe på tastaturet. Når du trykker på
8 tasten «Å», så vises bokstaven Å. Men noen ganger blir det
9 feil. Hvorfor det – og hva er viktig å være klar over i
12 Dersom bokstaver tolkes forskjellig mellom systemer, blir det fort
13 rot, dette kalles mojibake blant kjennere, etter det japanske
14 uttrykket for tegnomforming. Det er en lang historie her som tidvis
15 har vært preget av rot. Noen husker kanskje tilbake til en tid der
16 bokstavene æ, ø og å ofte var ødelagt i e-poster – et klassisk
17 eksempel på tegnsettproblemstilling.
21 Tid er et skjult problem for depot fordi vi danner dokumentasjon i en
22 kontekst som er preget av å være «nå». Vår forståelse av verden og
23 bruken av teknologi er utgangspunktet for denne konteksten. Tenk selv
24 hvordan verden har utviklet seg de siste 20 årene, hva samfunnet er
25 opptatt av, og hvordan vi bruker teknologi i hverdagen. Tid er et
26 skjult problem fordi når vi trekker dokumentasjon ut av systemer og
27 deponerer for langtidsbevaring, er konteksten til materialet «nå», men
28 verden går videre. Ettersom teknologien og måten vi bruker den på,
29 utvikler seg, blir «nå» til «før», og dokumentasjonen befinner seg
30 snart i en «før»-kontekst.
32 Dette med «før» og «nå» i forhold til dokumentasjonens kontekst er noe
33 vi er veldig lite bevisste på, men det er en problemstilling
34 depotarkivene eier og forvalter. En av disse utfordringene er hvorfor
35 «Ø» ikke nødvendigvis er det samme som «Ø», og hvorfor det i det hele
36 tatt gir mening å si noe sånt. Vi snakker her om noe som heter
37 tegnsett, som er en avtalt måte å representere bokstaver, tall og
38 andre symboler på slik at vi på en feilfri måte kan utveksle tekst
41 Tegnsettproblemstillingen er satt sammen av fire fasetter; repertoar,
42 representasjon, koding og uttegning.
46 Repertoar er en samling med tegn og symboler som
47 kan representeres. Tenk norsk alfabet eller japanske
48 piktogrammer, men også matematiske og elektroniske
50 symboler. Bokstaven «stor a» kan være en oppføring i et slikt
51 repertoar. For å kunne brukes i en datamaskin trenger hver oppføring i
52 et slikt repertoar en representasjon, hvilket i datamaskinsammenheng
53 betyr at det tilordnes et tall. Tallet kan lagres på ulike vis i en
54 eller flere kodingsformater. For eksempel kan en skrive tallet ti som
55 både 10, X og A, i henholdsvis titallssystemet, romertallssystemet og
58 Hvis en skal kunne lese inn filer og vite hvilket tall og hvilken
59 representasjon og instans i et repertoar det er snakk om, så må en
60 vite hvordan tallet er kodet. Sist, men ikke minst, for å kunne bruke
61 symbolet til noe må det kunne være kjent hvordan det skal se ut eller
62 tegnes på ark. Det finnes utallige skrifttyper med norske bokstaver,
63 alle litt forskjellige, og skal en kunne tegne en stor A på skjermen,
64 så må datamaskinen vite hva den skal tegne. Skrifttyper inneholder
65 informasjon om hvordan ulike tall skal tegnes. De inneholder ikke
66 alltid alle symbolene som er brukt i en tekst, hvilket gjør at ikke
67 alle forståtte tegn vil kunne vises på skjerm eller ark.
69 Hver av disse fasettene må være avklart for å kunne ta vare på og vise
70 frem tekst med en datamaskin. Kombinasjon av repertoar, representasjon
71 og koding er det en kaller et tegnsett. Kombinasjonen av
72 representasjon og uttegning kalles en skrifttype. De fleste
73 skrifttyper har også informasjon om repertoar, men det finnes
74 skrifttyper som kun kobler mellom tallkode og uttegning, uten å
75 fortelle noe om hvordan tallkodene egentlig skal tolkes.
77 ## Fra ASCII til ISO-8859
79 Vi begynner historien med ASCII (American Standard Code for
80 Information Interchange) som har en historie som spores tilbake til
81 1963. Utgangspunktet til ASCII var at det kunne kode opp til 128
82 forskjellige symboler i vanlig bruk i USA. De visuelle symbolene i
83 ASCII er de små og store bokstavene (a til z og A til Z), tall (0 til
84 9) og tegnsettingssymboler (for eksempel semikolon, komma og
85 punktum). ASCII har også noen usynlige symboler som ble brukt for
86 bl.a. kommunikasjon. Før ASCII var det for eksempel teleks-tegnsett
87 med plass til bare 32 tegn og EBCDIC med plass til 256 tegn, alle med
88 en helt annen rekkefølge på symbolene enn ASCII, men de har vært lite
89 brukt de siste femti årene. Et eksempel på noen utvalgte symboler i
90 repertoaret til ASCII vises i tabell 1.
92 .Eksempel på utvalgte symboler hentet fra ASCII-tegnsettet. Kolonnen «Binær» viser symbolets verdi i totallssystemet (1 og 0 tall), mens kolonnen «desimal» viser symbolets verdi i titallssystemet.
94 | Grafisk | Binær | Desimal
106 Det opprinnelige ASCII-tegnsettet ble også omtalt som ASCII-7 og
107 brukte 7 bits (0 og 1) for å representere symboler. Datamaskiner er
108 ofte konfigurert til å jobbe med enheter der bits er gruppert som 4
109 eller 8 bits . Det lå en mulighet i å ta i bruk bit åtte. En slik
110 endring ville gjøre det mulig for datamaskiner å øke antall symboler
111 de kunne representere, noe som ga en økning fra 128 forskjellige
112 symboler til 256 forskjellige symboler. Det ble åpnet for å innlemme
113 de nordiske bokstavene sammen med ASCII, og dette ble etter hvert
114 standardisert som ISO-8859-1. Tabell 2 viser deler av ISO-8859-1 som
115 støtter de norske bokstavene.
117 .Koding av de norske symbolene slik de er definert i ISO-8859-1 tegnsettet.
119 | Grafisk | Binær | Desimal
128 Det sier seg selv at muligheten til å representere inntil 256 symboler
129 ikke holder når vi snakker om en global verden, og det ble gjort et
130 standardiseringsløp som tok utgangspunkt i ASCII-7 med en utvidelse
131 til å bruke den åttende biten for ulike språkgrupper. Denne standarden
132 heter ISO-8859 og er inndelt i opptil 16 varianter, altså fra
133 ISO-8859-1 til ISO-8859-16.
135 Norske tegn er definert i ISO-8859-1, som også omtales som Latin 1, de
136 fleste samiske tegn er definert i ISO-8859-4 (Latin 4) mens tilgang
137 til €-symbolet kom med ISO-8859-15 (Latin 9). ISO-8859-15 er en
138 revisjon av ISO-8859-1 som fjerner noen lite brukte symboler og
139 erstatter bokstaver som er mer brukt, og introduserer €-symbolet. Det
140 er viktig å merke at alle ISO-8859-variantene har overlapp med
141 ASCII-7, noe som ga samvirke med de engelskspråklige landene som ikke
142 trengte å gjøre noe. Det innebærer også at de første 128 verdiene i
143 ISO-8859-variantene representerer de samme symbolene. Det er først når
144 du kommer til tolkningen av de resterende 128 verdiene med nummer 128
145 til 255, at det oppsto tolkningsutfordringer mellom
148 ISO-8859-verdenen fungerte godt så lenge tegnsettet som ble brukt når
149 innhold ble skapt, også ble brukt når innhold ble gjengitt og du ikke
150 trengte å kombinere innhold fra forskjellige tegnsett i samme
151 dokument. Utfordringen med bruken av ISO-8859-variantene ble raskt
152 tydelig i en mer globalisert verden med utveksling av tekst på tvers
153 av landegrenser der tekstlig innhold i dokumenter, e-poster og
154 websider kunne bli skrevet med ett tegnsett og gjengitt med et annet
157 .Viser tolkning av verdiene som er tilegnet de norske symbolene i ISO-8859-1 i de andre ISO 8859-variatene. Merk ISO-8859-12 ikke finnes da arbeidet ble avsluttet.footnote:[Kilde https://en.wikipedia.org/wiki/ISO/IEC_8859]
159 | Binærverdi | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 13 | 14 | 15 | 16
160 | 11000110 | Æ | Ć | Ĉ | Æ | Ц | ئ | Ζ | | Æ | Æ | ฦ | Ę | Æ | Æ | Æ
161 | 11011000 | Ø | Ř | Ĝ | Ø | и | ظ | Ψ | | Ø | Ø | ุ | Ų | Ø | Ø | Ű
162 | 11000101 | Å | Ĺ | Ċ | Å | Х | إ | Ε | | Å | Å | ล | Å | Å | Å | Ć
163 | 11100110 | æ | ć | ĉ | æ | ц | ن | ζ | ז | æ | æ | ๆ | ę | æ | æ | v
164 | 11111000 | ø | ř | ĝ | ø | ј | | ψ | ר | ø | ø | ๘ | ų | ø | ø | ű
165 | 11100101 | å | ĺ | ċ | å | х | م | ε | ו | å | å | ๅ | å | å | å | ć
168 Denne problemstillingen er illustrert i tabell 3, der vi ser verdiene
169 tilegnet de norske symbolene i ISO-8859-1 i kolonne «1». I de øvrige
170 kolonnene ser vi hvilket symbol verdien får i de andre
171 ISO-8859-variantene. Tar vi utgangspunkt i tabell 3, kan vi se at
172 ordet lærlingspørsmål gjengitt med ISO-8859-2 (kolonne 2) blir
173 lćrlingspřrsmĺl, mens det blir lζrlingspψrsmεl med ISO- 8859-7
174 (kolonne 7). Med ISO-8859-2 blir «æ» til «ć», «ø» til «ř» og «å» til
175 «ĺ». I ISO-8859-7 blir «æ» til «ζ», «ø» til «ψ», mens «å» blir «ε».
177 Det er egentlig ingen utfordring med dette så lenge du vet hvilket
178 tegnsett innholdet ditt er representert med, og det ikke har skjedd
179 omforminger som du ikke er klar over. Det er det siste som er
180 problematisk, spesielt de datasystemene som har vært i bruk de siste
181 20 årene, som ikke har noe innebygd funksjonalitet for å forvalte
182 tegnsettproblematikken. Et godt eksempel på dette er
183 Microsoft-tegnsettet Windows-1252, som ble forvekslet som 100 %
184 kompatibel med ISO-8859-1, men hadde byttet ut plassene fra 127 til
185 159. Historisk vil det finnes en del variasjon i hvilket tegnsett som
186 har vært i bruk, og hvor vellykket konvertering mellom tegnsett har
189 ## Unicode som løsning
191 Tegnsettforvirring ble etter hvert et irritasjonsmoment og
192 samvirkeproblem. Ofte fikk man en e-post der æøå var erstattet av rare
193 symboler fordi e-posten hadde vært innom et eller annet datasystem som
194 ikke brukte samme tegnsett.
196 For å løse dette samvirkeproblemet for tegnsett ble det startet et
197 arbeid og en ny standard så dagens lys etter hvert. Denne standarden
198 fikk navnet Unicode (ISO/ IEC 10646) og skulle resultere i et tegnsett
199 som alle skulle være enige om. Unicode er et repertoar og en
200 representasjon, dvs. navngivning og tilordning av tallverdi til alle
201 symboler i bruk i verden i dag. Oppføringer i Unicode skrives gjerne
202 U+XXXX der XXXX er tallkoden i sekstentallssystemet som oppføringen
203 har i Unicode-katalogen. Her finner vi tegn brukt av både levende og
204 døde språk, konstruerte språk, tekniske symboler, morsomme tegninger
205 (såkalte emojier) og tegn ingen vet hva betyr eller skal brukes
206 til. Et morsomt eksempel er i nettartikkelen: U+237C ⍼ RIGHT ANGLE
207 WITH DOWNWARDS ZIGZAG ARROW, av Jonathan Chan.footnote:[https://ionathan.ch/2022/04/09/angzarr.html]
209 Sammen med Unicode kom det tre måter å kode disse tallene på; UTF-8,
210 UTF-16 og UTF-32. Av datatekniske årsaker er UTF-8 mye brukt, spesielt
211 når det gjelder utveksling av tekst over Internett, mens UTF-16 er
212 brukt en del til tekstfiler lagret på Windows. En utfordring med
213 Unicode og UTF-variantene er at disse gir flere måter å kode samme
214 symbol på med en kombinasjonsmekanisme. Dette kan gi utfordringer ved
215 søk, hvis en skal søke etter et ord som har ett eller flere symboler
216 som kan skrives på ulikt vis, så er det ikke sikkert at søkesystemet
217 vil finne alle forekomster. For eksempel kan bokstaven U+00F8 «Latin
218 Small Letter O with Stroke» kodes som den tradisjonelle norske tegnet
219 ø, men også som o kombinert med skråstrek U+0338. Begge deler er
220 gyldig bruk av Unicode, selv om det er tradisjon for å foretrekke å
221 «normalisere» kombinasjoner som enkelttegn der det er mulig, nettopp
224 ## Bare Unicode fremover
226 Forvaltningens bruk av tegnsett er regulert i Forskrift om
227 IT-standarder i offentlig forvaltningfootnote:[https://lovdata.no/dokument/SF/forskrift/2013-04-05-959/%C2%A78#%C2%A78]. Her står det: «Ved all
228 utveksling av informasjon mellom forvaltningsorganer og fra
229 forvaltningsorgan til innbyggere og næringsliv skal tegnsettstandarden
230 ISO/IEC 10646 representert ved UTF8 benyttes.» Det er forskjellige
231 bruksområder til UTF-8, UTF-16 og UTF-32, men UTF-8 er kodingen vi
232 kjenner mest til. Det er flere grunner at UTF-8 «vant» konkurransen
233 til å bli den utvalgte. Den kanskje viktigste er at UTF-8 er fullt
234 samvirkende med ASCII-7, slik at den engelskspråklige delen av verden
235 kunne rulle ut UTF-8 uten å merke noe forskjell. En tekstfil med kun
236 ASCII-tekst vil være identisk på disken hvis den lagres som UTF-8 og
237 ASCII. UTF-16 og UTF-32 byr på noen optimaliseringer som gjør dem
238 relevant for spesifikke problemområder, men for det meste vil vi aldri
239 oppleve disse standardene på nært hold i hverdagen. Det er uansett kun
240 bruken av UTF-8 som er lovregulert i Norge.
242 Det er ikke slik at hele verden bruker ISO/IEC 10646 og UTF-8. Kina
243 har egne standarder for tegnsett, mye brukt er GB 18030, som er
244 Unicode med en annen koding enn UTF-8, mens Taiwan og andre asiatiske
245 land gjerne bruker Big5 eller andre tegnsett.
247 UTF-8 er dominerende i Norge, men det er tidsperioder der forskjellige
248 datasystemer utvekslet data i henhold til ISO-8859-1, ISO-8859-15,
249 Windows-1252, Codepage 865 og ISO-646-60 / Codepage 1016 mens
250 overgangen til UTF-8 pågikk. Det er ikke slik at et datasystem enkelt
251 kan tvinges til å bruke et tegnsett, da det er flere lag i et
252 datasystem som må settes opp til å bruke riktig tegnsett, og
253 tegnsettproblemet fort oppstår når det er et eller annet i
254 datasystemet som bruker feil tegnsett.
256 Et klassisk eksempel på problemet er en utveksling av tekst mellom to
257 systemer der teksten i utgangspunktet er kodet i UTF-8, men går
258 gjennom noe som er ISO-8859-1 underveis. Dette kan vises med at ordet
259 «på» i et slik scenario ender opp som «pÃ¥». Det er mulig å spore
260 dette tilbake til verdiene symbolene er tilordnet i tegnsettene. «på»
261 blir til «pÃ¥» fordi «å» i UTF-8 er representert med U+C3AF, og dersom
262 vi ser på hva disse verdiene representerer, ser vi at
263 sekstentallssystemverdien C3 er 1100 0011 i totallssystemet og
264 symbolet med dette tallet i ISO-8859-1 er Ã.
266 Vi ser det samme med sekstentallssystemverdien A5, som er 1010 0101 i
267 totallssystemet, og tilsvarende symbol i ISO-8859-1 er ¥. Slik
268 mojibake kan lett skje hvis «på» i utgangspunktet var representert med
269 UTF-8, men ble behandlet med et system som bruker ISO-8859-1. Det er
270 ingen automatikk i å fange opp slike ødeleggelser mens tekstlig
271 innhold utveksles mellom datasystemer.
273 En utfordring for depotarkivene er at bruken av tegnsett ikke alltid
274 har vært regulert, og at det kan finnes flere dokumentasjonssamlinger
275 som er opprettet med varierende tegnsett før gjeldende forskrift
276 inntraff – uten at det er mulig å avlede fra filene hvilket tegnsett
277 som ble brukt. Et eksempel på dette er €-symbolet, som kom først etter
278 at ISO-8859-1 var tatt i bruk. Det kan bli en utfordring for et
279 depotarkiv, men så lenge det er kjent hvilket tegnsett var i bruk, så
280 bør det gå bra. Riksarkivarens
281 forskriftfootnote:[https://lovdata.no/forskrift/2017-12-19-2286/§5-11]
282 formaliserer dette ved å kreve følgende:
286 § 5-11. Tegnsett i arkivuttrekk
288 1. Arkivuttrekk og medfølgende struktur- og
289 innholdsbeskrivelser skal overføres som ren tekst i
290 ukryptert form, og benytte godkjent tegnsett.
291 2. Godkjente tegnsett er:
293 (ISO/IEC 10646-1:2000 Annex D)
294 b. ISO 8859-1:1998, Latin 1
295 c. ISO 8859-4:1998, Latin 4 for samiske tegn.
296 3. Andre tegnsett aksepteres bare etter avtale med Arkivverket.
301 På mange måter burde ikke tegnsett være et problem i 2023, men sånn er
302 det nok ikke. Land som har oppgradert til UTF-8 som primærtegnsett for
303 utveksling av tekstlig innhold, begrenser problematikken betraktelig,
304 men globalt sett så er tegnsettutfordringen ikke løst fordi ikke alle
305 er enige om å bruke samme tegnsett. Det kan være geopolitiske eller
306 kulturelle hensyn som ligger til grunn for dette.
308 Det er uansett verdt å merke at selv om bruken av UTF-8 skulle bli
309 100% utbredt, så er det et historisk perspektiv (ASCII-7,
310 ISO-8859-variantene, UTF-8) her som gjør tegnsett til et problemområde
311 arkivarene må forstå og håndtere. Som danningsarkivar har du et
312 ansvar for å vite hvilket tegnsett systemene og databasene dere
313 forvalter, er i samsvar med. Det er noe IT-avdelingen din eller
314 programvareleverandørene enkelt skal kunne svare på, og svaret skal
315 være UTF-8 for alle nye systemer.
317 Relevante forskrifter (Se www.lovdata.no):
319 * Forskrift om IT-standarder i offentlig forvaltning
320 * Forskrift om utfyllende tekniske og arkivfaglige bestemmelser om
321 behandling av offentlige arkiver (riksarkivarens forskrift)