Account Options

  1. Sign in
The old Google Groups will be going away soon, but your browser is incompatible with the new version.
Google Groups Home
« Groups Home
Message from discussion UTF-8 - hur funkar det?
The group you are posting to is a Usenet group. Messages posted to this group will make your email address visible to anyone on the Internet.
Your reply message has not been sent.
Your post was successful
 
From:
To:
Cc:
Followup To:
Add Cc | Add Followup-to | Edit Subject
Subject:
Validation:
For verification purposes please type the characters you see in the picture below or the numbers you hear by clicking the accessibility icon. Listen and type the numbers you hear
 
Olof Lagerkvist  
View profile   Translate to Translated (View Original)
 More options May 7 2007, 8:09 am
Newsgroups: swnet.unix
From: Olof Lagerkvist <n...@email.address>
Date: Mon, 07 May 2007 12:09:19 GMT
Local: Mon, May 7 2007 8:09 am
Subject: Re: UTF-8 - hur funkar det?

Jorgen Grahn wrote:
> Hej,

> Kan någon antingen peka på dokumentation eller förklara ett par saker
> för mej?  Jag vet så pass mycket om UTF-8 att Wikipediaartikeln inte
> säger mej så mycket.

> 1. Hur är migrering till UTF-8 tänkt att gå till, för en sån som mej
>    som kört latin-1 sen jag köpte min första dator (Amiga 500) kring
>    1990?

>    Jag har sett Debian försöka installera sej i UTF-8, men inte låtit
>    den göra det.  Tydligen ska den erbjuda sig att leta igenom
>    filsystemen efter textfiler i andra kodningar och konvertera dom,
>    och om nåt sånt krävs blir jag mycket tveksam, för min dator är
>    inte en isolerad ö -- den byter ständigt otypat data med en
>    omgivning som kör Latin-1 och antagligen alltid kommer att göra
>    det.

Förstår inte riktigt vart du vill komma här. Konvertering mellan
teckenkodning kräver naturligtvis alltid konvertering mellan
teckentabeller. Det finns visserligen många finurliga sätt man med
varierande grad av säkerhet kan läsa igenom en textfil och avgöra vad
det är för teckentabell texten är kodad med, men det finns alltid en
inbyggd osäkerhet i sådana verktyg och det är ju alltid det som ska
använda texten som måste tolka detta rätt...

Alltså, även om det finns verktyg för att konvertera alla dina
befintliga textfiler så måste du ha någon rutin för att hantera
situationerna att ta emot och skicka filer och konvertera rätt. I de
flesta praktiska sammanhang (t ex mail, news etc) anges teckenkodningen
i överföringen och det är sedan upp till dig hur du vill spara filerna,
om du vill konvertera till någon annan teckenkodning eller inte.

> 2. Vad påverkas av att ha UTF-8 som del av $LC_CTYPE, egentligen?
>    read(2) och write(2) kommer ju att fortsätta hantera oktetter.

Nu har du hoppat ner långt under nivån där programmen ska känna till vad
teckenkodning är. Systemfunktioner som read() och write() ska i alla
sammanhang enbart betraktas som binära funktioner och inget annat. T ex
har du en variabel som innehåller en textsträng kodad med Latin-1 kommer
write() att skriva texten med Latin-1 i filen och är texten kodad med
UTF-8 kommer write() att skriva texten med UTF-8 till filen.
Konverteringen mellan teckentabeller görs en nivå ovanför, minst.

>    Är det <wctype.h> från C99 som denna localen jobbar mot, eller vad?

>    Eller mer generellt, hur programmerar man i POSIX och C för att hantera
>    in- och utdata i UTF-8 utan att samtidigt fucka upp hanteringen av
>    8859-1?

Det gör du alltså inte, helt enkelt. På den nivån (undantaget saker som
filnamn och liknande) finns inte begreppet teckentabell/teckenkodning.
Det där måste du lösa ovanför anropen till systemfunktioerna. Se till
att få texten kodad i den teckentabell du vill ha i den strängvariabeln
du ska spara till filen. Nu är jag väldigt dålig på just Linux men jag
antar att det finns snygga lättanvända funktioner för konvertering
mellan teckentabeller där också som i de flesta andra operativsystem.

> 3. Skrev inte nån av legenderna från tidig Unix (Kernighan? Pike?
>    Henry Spencer?) en artikel om hur UTF-8 är inkompatibel med Unix
>    designregel "allt är en textfil"?  Jag kan svära på att jag läst den,
>    men hittar den inte nu.  Och det kan knappast vara nån ur
>    Plan 9-gänget eftersom UTF-8 var deras idé.

Det är möjligt, men vad skulle argumentationen gå ut på i så fall?
Hantering av filer som inte innehåller ren ASCII-text är ju inte direkt
nytt i Unix-världen heller... Kan det ha varit det principiellt knepiga
med att tillåta teckenkodningar där inte alla tecken representeras av
lika många bitar?

> Jag frågar här eftersom jag lever i Unixvärlden, och för att jag
> misstänker att Unix hanterar detta på ett enhetligt sätt, medan
> Micrsoft kör vidare med sina sextonbitarstecken eller vad dom nu
> hittat på.

Nu skulle jag kunna korsa till s.d.datorkring och börja tjafsa men jag
låter bli det... ;-)

Det där med 16-bitarstecken är ju knappast mindre enhetligt än något
annat, snarare tvärtom, dessutom är det inget som Microsoft har hittat
på. Det är ju 16-bitarstecknen som är riktig Unicode-standard. UTF-7 och
UTF-8 är visserligen också standard men egentligen bara uppfinningar för
att undvika onödigt slöseri med utrymme och det är väl egentligen enbart
utrymmet och inget annat alls som skulle kunna vara argument mot att
använda 16-bitars Unicode i alla sammanhang.

Fördelen Microsoft har med att ha designat operativsystemskärnan så att
den enbart pratar 16-bitars Unicode är ju att man slipper
teckentabellsbekymmer på den nivån även i sammanhang där kärnan måste
tolka textsträngar som just text och inte bara ren binär data, t ex i
filnamn och liknande. Det är också bra mycket enklare (och mer enhetligt
skulle jag vilja säga) programmeringsmässigt när man vet med 100%
säkerhet att alla tecken är 16 bitar och aldrig kan vara något annat,
oavsett om det är bokstaven 'a' eller något kinesiskt tecken.

Det är två olika vägar som har valts och man kan nog knappast säga att
Unix-världen har ett mer "enhetligt" sätt att hantera detta än
Windows-världen. Spontant får jag nog säga att Windows-världens
hantering är mer "enhetlig" i så fall, men det är naturligtvis en
definitionsfråga och mycket tycke och smak och inget annat.

> Och om jag verkar negativ så är det för att jag är negativ ;-) Inte
> mot UTF-8 som en kodning för transport av data på exv Usenet, utan
> när det kommer in otypat i min traditionella 8859-1-värld.

Det kan man ju förstå. Teckenkodning inför en ny dimension av saker att
ta hänsyn till, speciellt i programmeringssammanhang.

--
Olof Lagerkvist
ICQ: 724451
Web: http://here.is/olof


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.