Från {|} till åäö
1989 argumenterade jag för att vi skulle fortsätta skriva svenska på nätet med den teckenuppsättning som våra terminaler faktiskt använde. 2003 var jag med och standardiserade hur riktiga Unicode-tecken kunde användas i domännamn. Det låter som två helt olika ståndpunkter. Jag tycker egentligen att det är samma.
När {|} betydde åäö
Link to heading
ASCII har 128 tecken. Det räcker för engelska, siffror och skiljetecken, men inte för å, ä och ö.
I Sverige användes därför en nationell variant av ISO 646. På svenska terminaler kunde teckenpositioner som i vanlig ASCII innehöll bland annat klammerparenteser i stället visas som svenska bokstäver.
Det gjorde att man kunde skriva exempelvis:
Jag {r d|dsbra p} svenska.
och på en svensk terminal läsa:
Jag är dödsbra på svenska.
Det var förstås ingen generell lösning. En amerikansk terminal visade klammerparenteser och lodstreck. Men inom en miljö där alla använde samma teckenuppsättning fungerade det alldeles utmärkt.
En diskussion i soc.culture.nordic, 1989
Link to heading
I juli 1989 diskuterades i soc.culture.nordic hur skandinaviska tecken borde skrivas i netnews.
Ett förslag var att translitterera dem med ASCII-sekvenser: exempelvis o: för ö, a: för ä och a. för å.
Jag tyckte inte det var någon förbättring.
På SUNET och NORDUNET hade vi redan ett fungerande sätt att skriva svenska. Jag skrev från draken.nada.kth.se:
“In ALL our local newsgroups on NORDUNET and SUNET all articles in Swedish are written with
[]{}\|. Why must we change the typing from the way we always have done in THIS meeting.”
Och, något mindre diplomatiskt:
“Forget that!
Jag {r d|dsbra p} svenska.is much better.”
Poängen var inte att {|} var någon elegant universallösning. Poängen var att det redan fungerade för de människor som använde systemen. Att ersätta varje svensk bokstav med två ASCII-tecken bara för att få en annan kompromiss kändes inte särskilt meningsfullt.
När åtta bitar blev användbara Link to heading
ISO 8859-1 gav de västeuropeiska tecknen egna åttabitarsvärden. Å, ä och ö behövde därmed inte längre låna teckenpositioner från ASCII.
Men det fanns fortfarande ett praktiskt problem: mycket av Internet var byggt med sju bitars text i åtanke.
SMTP och andra protokoll hade ASCII som utgångspunkt. Att bara skicka bytes med den åttonde biten satt var därför inte säkert. Någon implementation på vägen kunde kapa biten eller på annat sätt förvanska innehållet.
Det var ett av problemen MIME löste.
Med MIME gick det att tala om vilket teckenset ett meddelande använde och dessutom transformera innehållet till en form som klarade sjubitars transport:
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: quoted-printable
Med quoted-printable kunde till exempel å, som i Latin-1 har värdet E5, transporteras som:
=E5
och återskapas hos mottagaren.
Rubrikfälten var ett eget problem Link to heading
Det räckte inte att lösa meddelandekroppen.
Rubriker som Subject:, From: och Organization: var också definierade utifrån ASCII. Mitt eget efternamn var ett ganska bra testfall.
Den 1 oktober 1991 skickade Peter Svanberg, Olle Järnefors, Jan Michael Rynning och jag ett förslag till IETF: The KTH-proposal of a solution to the header-problem.
Vi föreslog bland annat:
Header-Type: ISO-8859-1
Header-Transfer-Encoding: Quoted-Printable
Det blev inte den slutliga lösningen, men problemet var verkligt och diskussionen fortsatte. Den standard som senare blev RFC 2047 definierade det som fortfarande används för kodade ord i e-postrubriker.
1994 medförfattade jag RFC 1740, MIME Encapsulation of Macintosh Files, tillsammans med Dave Crocker och Erik Fair. Det var min första RFC.
Unicode och UTF-8 Link to heading
Åttabitars teckentabeller löste förstås bara en liten del av problemet.
Man kunde ha en tabell för västeuropeiska språk, en annan för något annat språk och så vidare, men det skalar dåligt om man vill kunna hantera världens skriftsystem i samma informationssystem.
Unicode angriper i stället problemet genom att ge tecken ett gemensamt kodutrymme.
UTF-8 gjorde detta praktiskt på Internet. Det viktiga designvalet var att ASCII förblev ASCII: de första 128 tecknen representeras exakt som tidigare, medan övriga Unicode-tecken använder flera bytes.
Till exempel:
å C3 A5
ä C3 A4
ö C3 B6
Det betydde att existerande ASCII-text fortfarande var giltig UTF-8 och att övergången kunde ske utan att allt behövde bytas samtidigt.
Sedan återstod domännamnen Link to heading
Webbsidor och e-post kunde alltså använda andra skriftsystem långt innan det gick att använda dem i själva domännamnet.
DNS behövde dock inte göras om för att lösa detta.
Det var en viktig egenskap hos IDNA, Internationalizing Domain Names in Applications. Jag var tillsammans med Paul Hoffman och Adam Costello författare till RFC 3490, som publicerades 2003.
Principen är att applikationen gör om ett internationaliserat domännamn till en ASCII-representation som kan användas i det existerande DNS-systemet.
Exempel:
päf.se
blir:
xn--pf-mia.se
DNS behöver alltså inte känna till ä. Webbläsaren, e-postklienten eller någon annan applikation gör omvandlingen.
Det är en lösning jag fortfarande tycker är intressant av samma skäl som många andra bra Internetlösningar: man ändrar inte mer än vad som faktiskt behöver ändras.
RFC 3490 ersattes senare av IDNA2008, RFC 5890–5895. Bland annat ändrades modellen för vilka Unicode-tecken som ska kunna användas i domännamn.
Och arbetet tar inte slut bara för att standarden finns. Unicode fortsätter att utvecklas och varje ny version innebär att man måste ta ställning till nya tecken. I skrivande stund arbetar jag med draft-faltstrom-unicode-18, om IDNA och Unicode 18.
Lars, Unicode och en oväntad parallell Link to heading
Det finns också en personlig sidohistoria.
Lars Fredriksson, mrfung, är en gammal vän till mig. Kimchireceptet på bolingo.org skrevs ner i hans kök 1988.
Betydligt senare insåg jag att våra vägar också hade korsats i arbetet med tecken och internationalisering.
Lars arbetade tidigt med östasiatiska skriftsystem och digital text. Hans namn förekommer i material från Unicode-arbetet från slutet av 1980-talet, och han deltog senare även i sammanhang kring internationaliserade domännamn.
Det är en sådan där detalj man kan upptäcka först långt efteråt: två spår som tycktes vara helt separata visade sig ha löpt bredvid varandra under lång tid.
Samma fråga, olika svar Link to heading
1989 argumenterade jag alltså för att {, | och } var ett rimligt sätt att skriva svenska på nätet.
2003 var jag med och standardiserade hur Unicode-tecken kunde användas i domännamn.
Det kan se motsägelsefullt ut om man bara tittar på representationen. För mig är det snarare samma tekniska hållning.
Använd det som fungerar i den miljö man faktiskt har. Ändra inte mer än nödvändigt. Men när omgivningen förändras ska lösningen också få förändras.
1989 var omgivningen svenska terminaler och ett i huvudsak sjubitigt Internet.
I dag är den Unicode och UTF-8.