Christian Rose writes: > Göran Uddeborg wrote: > > > Nej, inte i huvudet på en po-fil... > > > > Jaså? Varför inte? Finns det några problem med att ha > > icke-ASCII-tecken där? Jag brukar ha både "©" och "ö". > > Problemet är väl att huvudet ska läsas av många olika program som kanske > inte förstår latin1. Programmet kanske antar att huvudet är i utf-8, och > då blir icke-ASCII-tecken fel. Det är ju först i huvudet som det står > vilken teckenkodning det används i meddelandena i resten av filen, men > huvudet i sig Men här talar vi inte om det egentliga huvudet, utan om kommentaren som hör till det. > > Jag har 33 olika alias för mig själv. :-) (Administrativa som också > > går till mig oräknade.) > > Oj, herrejösses, jag har bara sex icke-administrativa alias... Jo, men du har ju inga svenska tecken som kan gå sönder att ta hand om ... > Martin Norbäck wrote: > > Spela in till ett kassettband kan man väl säga? > > Kan man det? Jag har aldrig hört det själv. Inte jag heller. > > Problemet med åäö i filnamn är att vissa inte kan visa dem, att vissa > > använder till exempel UTF-8 för filnamn och att de då blir fel. Bäst att > > undvika. > > Jag förstår ditt bekymmer men tror samtidigt själv att det är ganska > säkert att anta att filer eller mappar som heter standardnamnet > "namnlös" nästan uteslutande bara sprids och förpestar lokala system... > Iaf hoppas jag det =) Moderna implementationer av gettext, jag tänker på den i glibc 2.2, konverterar strängen den hittar i meddelandefilen till den teckenkodning som är angiven i miljön. Meddelandefilen innehåller ju information om vilken kodning den använder. Så det "ö" som står i "namnlös", liksom alla andra ö:n, betyder just tecknet "ö", och inte någon kodning av det. Om du har angivit en annan teckenkodning än den som finns i meddelandefilen så översätts det automatiskt på vägen. Låt mig visa med ett exempel. (De på listan som inte alls programmerar kan ju hoppa över detta.) Jag skriver programmet #include <locale.h> #include <libintl.h> #include <stdio.h> int main (int argc, char *argv[]) { setlocale(LC_ALL, ""); textdomain("libc"); puts(gettext("Permission denied")); return 0; } Det försöker alltså skriva texten "Permission denied" från libc i enlighet med lokalen. Om jag kör det med standardlokalen sv_SE, vilken har ISO-8859-1 som skönsvärde 22:44 uebn> env LANG=sv_SE ./main Åtkomst nekas Om jag däremot använder lokalen C för teckenkodning så finns det inget "ö" i den, utan det skrivs ett frågetecken istället. 22:46 uebn> env LANG=sv_SE LC_CTYPE=C ./main ?tkomst nekas Och om jag tar en lokal med UTF8-tecken så blir det UTF8. 22:49 uebn> env LANG=sv_SE LC_CTYPE=ko_KR.utf8 ./main | od -c 0000000 Ã 205 t k o m s t n e k a s \n 0000017 Att jag använder koreanska beror bara på att det råkar vara den enda färdiga lokal som har utf8-kodning på mitt system. Hade det funnits en färdig sv_SE.utf8 så hade jag naturligtvis bara behövt sätta LANG till det.
Arkiv genererat av hypermail 2.1.1.