Obligatorisk oppgave 1, INF1040, gruppe 9, Odd Bøyding

Historien om bokstaven Å

.

Hvordan bokstaven stor Å og liten å er representert angies i standarder.

I de første standardene fantes ikke stor Å og liten å fordi det ble betraktet som spesialtegn.

F.eks. UNIVACs 6-bits FIELDATA kodeskjema fra 1960.

Her var bare bokstavene A til Z, tallene 0 til 9 og enkelte spesialtegn.

Istedenfor ble stor Å da skrevet med AA i tekster. Liten å ble skrevet med aa i tekster.

.

I 1963 kom ASCII. Standarden er meget gjennomtenkt, brukes den dag i dag og er inkludert i nyere

standarder. Her er bokstavene A til Z, bokstavene a til z, tallene 0 til 9 og mange spesialtegn. Men

standarden har ikke stor Å og liten å.

I ISO 646-60 som bygger på ASCII er tegnet ] byttet ut med stor Å, og tegnet } er byttet ut med

liten å. Lignende tilpasninger er gjort for andre språkmiljøer. Men slik byttinger av tegn kan

medføre problemmer dersom tekst og printere ikke tilpasses samme plattform.

ASCII og ISO 646-60 er på 7 biter. Det er her plass til 128 forskjellige kombinasjoner av nuller og

enere på sju biter.

I ISO 646-60 har stor Å desimalkode 93, heksadesimalkode 5D og binærkode 1011101.

Liten å har desimalkode 125, heksadesimalkode 7D og binærkode 1111101.

.

I 1968 kom Extended ASCII og ISO 8859 med 8 biter.

Det er her plass til 256 forskjellige kombinasjoner av nuller og enere på åtte biter.

Det finnes flere utgaver av ISO 8859. Hvilke tegn verdiene fra 128 til 255 svarer til varierer fra

plattform til plattform og fra land til land.

Microsoft Windows-1252 er lik ISO 8859-1, men her er i tillegg benyttet 28 tegn som ikke er

definert i ISO 8859-1.

Windows og MS-DOS er foreksempel ikke enige om tallverdiene til æ, ø og å.

Et tegnsett tilpasset lokale forhold er selvfølgelig uheldig i en verden som blir mer og mer

internasjonal.

I ISO 8859-1 Latin Alphabet No. 1 (Vest-Europa) finnes stor Å og liten å.

I ISO 8859-1 har stor Å desimalkode 197 og heksadesimalkode 5C.

Liten å har desimalkode 229 og heksadesimalkode E5.

.

ISO 8859-15 Latin Alphabet No. 9 (0) er en modernisert utgave av ISO 8859-1.

.

Den enderlige løsningen på definering av stor Å og liten å er nå ved hjelp av Unicode og ISO

10646. Unicode er ett mye mere omfattende tegnsett enn ASCII. Unicode er kompatible med ASCII

og ISO. Gamle tekster kan derfor bruke Unicode.

Første 128 tegn er identisk med ASCII og første 256 tegn er identisk med ISO 8859-1.

Unicode består av 17 plan på 256 * 256 tegn. Hvert tegn representeres ved 2 bytes.

I plan 0 som kalles BMP - Basic Multilingual Plane ligger stor Å og liten å.

Heksadesimalekoden er fra 0x0000 til 0xFFFD.

Alle vedtatte tegn i Unicode ligger i en database. Det gjør at alle vedtatte tegn ikke skal endres.

Det medfører at problemmer med printing av tekster vil gå bra i framtiden. F.eks. Java bruker

Unicode. Ved tidligere standarder kunne en få problemmer ved printing dersom tekst og printer

ikke brukte samme standard. F.eks. stor Å kunne bli erstattet med ] ved printing.

.

I Unicode kan samme tekst representeres på flere måter.

Stor Å kan lages ved å føye en diakritisk markering (aksent) til et basistegn (en bokstav).

En diakritisk markering er et ikke-selvstendig tegn.

"Armstrong or ring above" kan kombineres med stor A for å få stor Å, og liten a for å få liten å.

Stor A har heksadesimalkode 0041. Ringen over har heksadesimalkode 030A.

Stor Å blir da heksadesimalkode 00C5.

Liten a har heksadesimalkode 0061. Ringen over har heksadesimalkode 030A.

Liten å blir da heksadesimalkode 00E5.

.

I Unicode finnes dublikater. Det er fordi spesielle varianter representeres som egne tegn. F.eks.

tegnet for enheten Ångstrøm skrives som stor Å, men har heksadesimalkode 212B.

.

For å være kompatibel med ASCII og ISO 8859-1 finnes det også såkalte forhåndssammensatte

("precomposed") tegn, der basistegn og kombinasjonstegn oppfattes som ett tegn.

Ved sammenligning av tekster bør forhåndssammensatte tegn erstattes med basistegn pluss

kombinasjonstegn.

.

Ved Unicode-koding av tegnstrømmer benyttes ulike formater.

Format UTF-16 sender alle tegn i BMP som 16-bits tegn.

Format UTF-8 sender tegn som 8, 16 eller 32-bits tegn.

Tegn i ASCII sendes som 8-bits tegn (1 byte) med verdier 00 til 7F. UTF-8 er identisk med ASCII

for tegn definert i ASCII. Men her går det dårlig med stor Å og liten å definert i 2 bytes fordi

det er større enn 7F. UTF-16 bør derfor brukes for at stor Å og liten å skal gå bra.

En annen måte å håndtere UTF-8 tegn utenfor ASCII er å dekomponere forhåndssammensatte tegn

slik at de kanskje havner i ASCII. Tegn som fremdeles er utenfor ASCII sendes som byte-sekvenser

med to til fire bytes. Første byte inneholder en verdi (utenfor ASCII-tegnsettet) der de første bitene

forteller hvor mange bytes som følger. Resten av bitene i første byte pluss bitene i de etterfølgende

brukes for å bestemme kodepunktet i det komplette Unicodetegnsettet.

F.eks. Java bruker 2 bytes. Ved sending av tekster på 1 byte til Java er det metoder i Java som gjør

at tekster med stor Å og liten å blir riktige.

.

Jeg har hentet opplysninger fra forelesningsfoilene, læreboka av Cyganski, læreboka

Programmering i Java av Else Lervik og Vegard B. Havdal, og webadressen www.unicode.org.


Created av Odd Bøydingepost17. september 2003