Citat:
Ursprungligen inskrivet av formatckolon
Det är ingen valid XML, UTF-8 får inte innehålla å, ä, ö.
Öppnar du den i en XML editor, eller Internet Explorer för den delen ser du att det blir fel...
/Anders
Nu pratar du strunt. Unicode kan innehålla våra svenska tecken, åäö, samt tusentals andra tecken.
Nu kommer Conios lilla pedagogiska mini-genomgång om teckenbehandling. Jag är dock ingen expert på teckenlära men i stort ska det vara rätt.
Ett tecken är just ett tecken som kan användas i ett språk. Typiska sådana är bokstäver i alfabet, siffror men även andra saker som punkter, komman, matematiska operatorer.
Sedan finns det också ett koncept som heter glyfer (korrekt översatt?). Detta handlar om den visuella presentationen av ett tecken. I vissa språk så kan samma tecken representeras olika beroende på vart det är placerat i ett ord t.ex.
En dator databehandlar, det tror jag alla är med på. En dator hanterar tal, och gör operationer på tal. För att kunna databehandla text så måste man helt enkelt bestämma att vissa tal betyder vissa tecken.
En konvention kan till exempel vara A=0, B=1, C=2, a=100,b=101, c=102 osv.
En lista med tal/tecken-översättningar kallas för teckentabell.
Historiskt så hade olika datorplatformar olika teckentabeller. Detta ledde med teknikutvecklingen ganska snabbt till problem när de olika datorplatformarna skulle prata med varandra.
Efter diverse diskusioner och liknande så utkristaliserades två standarder egentligen, ASCII och EBCDIC. Dessa teckentabeller (det finns flera ASCII teckentabeller, beroende på vilka språk/regioner man avser) var från början 7-bitar långa, vilket gjorde att man fick plats med (128 tecken). Dessa blev senare 8-bitar, vilket då dubblar antalet tecken som fick plats i standarden. Detta var till fördel för oss i sverige, då för att den 7-bitars teckentabellen var så knökad så man fick ta bort "viktiga" tecken för att få plats med våra svenska bokstäver. ASCII standarden utgick sedan som mall till en ISO standard.
Nu senare med Internet utspridet runt hela världen så blir det allt mer aktuellt att kunna kommunicera och hantera tecken från allehanda språk. Det gör att med gällande ASCII/ISO teckentabeller så måste man fortfarande göra teckenomvandlingar. Våra grannar en bit till öst, ryssarna kör ju med det krylliska alfabetet. Att integrera det i ett befintligt 8-bitarssystem med sortering och hantering blir minst sagt jobbigt.
Därför tillkom Unicode. Unicode är ett försök till att göra ett teckenutrymme så stort så att i princip alla tecken som behövs för alla levande språk får plats. Jag tror att de senare versionerna av Unicode (4.0+) har ett teckenutrymme på 32-bitar, vilket gör att man får plats med runt fyra miljarder tecken i unicode. Det borde räcka ett tag.
Unicode är därför ganska bra, om alla hanterar unicode så bör vi förhoppningsvis inte få teckenkonverteringsproblem på ett bra tag. Problematiken att hantera vissa språk kan vara svårt nog 8-).
Vän av ordning har dock noterat något som jag skrev två stycken ovan. 32-bitar?!? Det betyder att för dem som använder Unicode så tar all text upp fyra gånger så mycket plats!
Mja, det kan vara så. Unicode definerar en teckentabell som är 32-bitar. Sedan definerar de också ett sätt enkoda tecken. Enkodningen handlar om att omvandla tecken i tabellen till bytes. Den mest populära varianten för att enkoda Unicode är UTF-8.
UTF-8 enkodningen innebär att ett tecken tar upp 1-5 bytes. Engelska tecken tar upp 1 byte, de flesta övriga latinska tecken tar upp två. Det gör att platsförlusten av Unicode blir ganska liten.
Det finns även fler encodningar. Med UTF-16 enkodningen blir varje tecken minst 2 bytes. I UCS-2 så blir varje tecken ALLTID 2 bytes, men då stöds inte de mer obskyra tecknena.
Så tillbaka till Anders svar. Ett UTF-8 enkodat XML-dokument får innehålla åäö, men de får inte finnas i dokumentet enkodat med ISO-8859-1 8-).
//C