[linux] Re: utf-8 hint

Wybo Dekker wybo op servalys.nl
Ma mei 1 15:37:49 CEST 2006


On Mon, 1 May 2006, Martijn van Oosterhout wrote:
> On Mon, May 01, 2006 at 01:14:58PM +0200, Wybo Dekker wrote:
>> Kan iemand me een hint geven waar te kijken als ik utf-8 wil
>> gebruiken?
>>
>> Heb hier bv een dir met spaanse mp3's.
>> Als ik die list met ls in een xterm zie ik accent chars op drie
>> manieren:
> Wat is jouw locale gewoonlijk? Als je "locale" typt, krijg je de lijst.

ik had 'C', maar zie hieronder

> Als je locale bij het starten van xterm niet goed is, dan zal xterm
> nooit utf-8 laten zien.
>
> "locale -a" geeft de lijst mogelijke locales. Als je een xterm begint
> met een utf-8 locale:
>
> LANG=en_US.utf8 xterm &

Eh... niet zomaar, vanuit een bestaande xterm werkte het niet. 
Maar nadat ik in mijn starup file  LANG=en_US.utf8 had gezet en 
opnieuw inlogde ging het helemaal goed, bedankt voor die tip!

Alleen gebeuren er nu wel rare dingen:

1. Delete werkt nu als Backspace

2. ls gedraagt zich case-insensitive. In een dir waar (bv) files
    x en X staan:

    tmp>touch x X
    tmp>ls [a-z]
    x  X
    tmp>ls [A-Z]
    x  X
    tmp>

    Dit was precies de reden waarom ik 2 jaar geleden op LANG=C
    overging op basis van een discussie op de unix-gg lijst
    waarvan ik de mails gattached heb...

-- 
Wybo

> From j.kersing op the-box.com Sun Mar 21 15:26:28 2004
> From: Jac Kersing <j.kersing op the-box.com>
> Subject: Re: [Unix-gg] case-sensitivity in bash
> To: unix-gg leden discussie lijst <unix-gg op hobby.nl>
> Date: Sun, 21 Mar 2004 14:51:04 +0100 (CET)
> 
> 
> On Sun, 21 Mar 2004, Wybo Dekker wrote:
> 
> > Mijn bash expandeert (op een van mijn twee machines) sind enige tijd 
> > 
> > ls [a-z]* 
> > 
> > net als 
> > 
> > ls [a-zA-Z]* 
> > 
> > zelfs als ik hem opstart met bash --norc --noprofile, en ik kan er maar 
> > niet achterkomen waarom. De nocaseglob optie staat op off. 
> > Heeft iemand een idee waar ik moet zoeken? 
> 
> Environment variabele LANG. Zet 'm op LANG=C voor het oude gedrag.
> 
> Mvg,
> 
> Jac
> 
> -- 
>  Jac Kersing            Technical Consultant   The-Box Development
>  j.kersing op the-box.com                         http://www.the-box.com 
> _______________________________________________
> Unix-gg mailing list
> Unix-gg op hobby.nl
> https://mail.hobby.nl/mailman/listinfo/unix-gg
> 
> 
> From toon op hout.vanvergehaald.nl Sun Mar 21 15:26:28 2004
> From: Toon van der Pas <toon op hout.vanvergehaald.nl>
> Subject: Re: [Unix-gg] case-sensitivity in bash
> To: unix-gg leden discussie lijst <unix-gg op hobby.nl>
> Date: Sun, 21 Mar 2004 14:50:52 +0100
> 
> 
> On Sun, Mar 21, 2004 at 02:51:04PM +0100, Jac Kersing wrote:
> > On Sun, 21 Mar 2004, Wybo Dekker wrote:
> > 
> > > Mijn bash expandeert (op een van mijn twee machines) sind enige tijd 
> > > 
> > > ls [a-z]* 
> > > 
> > > net als 
> > > 
> > > ls [a-zA-Z]* 
> > > 
> > > zelfs als ik hem opstart met bash --norc --noprofile, en ik kan er maar 
> > > niet achterkomen waarom. De nocaseglob optie staat op off. 
> > > Heeft iemand een idee waar ik moet zoeken? 
> > 
> > Environment variabele LANG. Zet 'm op LANG=C voor het oude gedrag.
> 
> Ik zie het zelfde. En je hebt gelijk met LANG-C.
> Interessant. Waarom gebeurt dit? Heb je er een verklaring voor?
> Waarom verandert NLS het standaard Unix-gedrag?
> 
> Groeten,
> Toon.
> -- 
> "Debugging is twice as hard as writing the code in the first place.
> Therefore, if you write the code as cleverly as possible, you are,
> by definition, not smart enough to debug it." - Brian W. Kernighan
> _______________________________________________
> Unix-gg mailing list
> Unix-gg op hobby.nl
> https://mail.hobby.nl/mailman/listinfo/unix-gg
> 
> 
> From j.kersing op the-box.com Sun Mar 21 15:26:28 2004
> From: Jac Kersing <j.kersing op the-box.com>
> Subject: Re: [Unix-gg] case-sensitivity in bash
> To: unix-gg leden discussie lijst <unix-gg op hobby.nl>
> Date: Sun, 21 Mar 2004 15:29:23 +0100 (CET)
> 
> 
> On Sun, 21 Mar 2004, Toon van der Pas wrote:
> 
> > Ik zie het zelfde. En je hebt gelijk met LANG-C.
> > Interessant. Waarom gebeurt dit? Heb je er een verklaring voor?
> > Waarom verandert NLS het standaard Unix-gedrag?
> 
> Zie: http://www.linuxjournal.com/article.php?sid=3286
> 
> Mvg,
> 
> Jac
> 
> -- 
>  Jac Kersing            Technical Consultant   The-Box Development
>  j.kersing op the-box.com                         http://www.the-box.com 
> _______________________________________________
> Unix-gg mailing list
> Unix-gg op hobby.nl
> https://mail.hobby.nl/mailman/listinfo/unix-gg
> 
> 
> From toon op hout.vanvergehaald.nl Sun Mar 21 15:26:29 2004
> From: Toon van der Pas <toon op hout.vanvergehaald.nl>
> Subject: Re: [Unix-gg] case-sensitivity in bash
> To: unix-gg leden discussie lijst <unix-gg op hobby.nl>
> Date: Sun, 21 Mar 2004 15:54:04 +0100
> 
> 
> On Sun, Mar 21, 2004 at 03:29:23PM +0100, Jac Kersing wrote:
> > On Sun, 21 Mar 2004, Toon van der Pas wrote:
> > 
> > > Ik zie het zelfde. En je hebt gelijk met LANG-C.
> > > Interessant. Waarom gebeurt dit? Heb je er een verklaring voor?
> > > Waarom verandert NLS het standaard Unix-gedrag?
> > 
> > Zie: http://www.linuxjournal.com/article.php?sid=3286
> 
> Dankjewel voor deze link. Maar volgens mij beantwoordt het de vraag
> in kwestie toch niet helemaal. In het artikel vind ik geen match op
> de strings "bash", "shell" en "expan". De auteur gaat het onderwerp
> uit de weg.
> 
> De complexiteiten van de internationalisatie zijn mij (grotendeels
> :-) bekend. Maar het onderhavige probleem gaat over de expansie van
> de character class [a-z]. Deze character class kan toch niet anders
> worden geïnterpreteerd dan als de reeks letters, startend met kleine
> letter 'a' en kleine letter 'z'. Is het plotseling onmogelijk
> geworden om dit soort character classes correct te laten matchen?
> 
> Ok ok, ik ben op de hoogte van de multi-byte character sets zoals
> UTF-8. Maar gelukkig is bij het ontwerp daarvan de range ASCII-codes
> letterlijk overgenomen. Niet voor niks toch? De bedoeling daarvan was
> toch om zo weinig mogelijk bestaande functionaliteit te breken?
> Naar mijn mening zou [a-z] alléén moeten matchen met een klein letter
> uit de reeks 'a' t/m 'z', óók wanneer we nl_NL op euro gebruiken.
> We werken tenslotte niet op een Windows-bak, toch?
> 
> Groeten,
> Toon.
> 
> BTW: Het zetten van LANG=C is geen oplossing. Deze variabele wordt
> immers ook gebruikt door alle applicaties die door de gebruiker
> worden opgestart. Ik wil openoffice.org graag draaien met nl_NL,
> anders werkt de invoer van characters met accenten niet.
> (Dit vind ik trouwens een vreemde zaak. Waarom werkt oo niet correct
> met us? Amerikanen moeten toch ook wel eens een buitenlands woord
> typen, net zoals wij ook wel eens frans of duits (überhaupt) typen.)
> -- 
> "Debugging is twice as hard as writing the code in the first place.
> Therefore, if you write the code as cleverly as possible, you are,
> by definition, not smart enough to debug it." - Brian W. Kernighan
> _______________________________________________
> Unix-gg mailing list
> Unix-gg op hobby.nl
> https://mail.hobby.nl/mailman/listinfo/unix-gg
> 
> 
> From j.kersing op the-box.com Sun Mar 21 16:27:04 2004
> From: Jac Kersing <j.kersing op the-box.com>
> Subject: Re: [Unix-gg] case-sensitivity in bash
> To: unix-gg leden discussie lijst <unix-gg op hobby.nl>
> Date: Sun, 21 Mar 2004 16:49:26 +0100 (CET)
> 
> 
> On Sun, 21 Mar 2004, Toon van der Pas wrote:
> 
> > Maar het onderhavige probleem gaat over de expansie van de character
> > class [a-z]. Deze character class kan toch niet anders worden
> > geïnterpreteerd dan als de reeks letters, startend met kleine letter 'a'
> > en kleine letter 'z'. Is het plotseling onmogelijk geworden om dit soort
> > character classes correct te laten matchen?
> 
> Zoals je in het artikel kunt lezen geldt voor sommige talen dat letter 
> combinaties gelden als 1 letter. Dus is het niet simpel weg een rij van a, 
> b, c ... z meer, maar een complexer geheel. Waarom daar opeen ook 
> hoofdletters bij horen ontgaat mij op het moment ook.
> 
> Als ik (ooit) meer tijd heb duik ik er dieper in. Natuurlijk houd ik me 
> aanbevolen voor hints en tips van anderen die nu al het naadje van de 
> kous weten (of tijd hebben om dat nu te zoeken)
> 
> Mvg,
> 
> Jac
> -- 
>  Jac Kersing            Technical Consultant   The-Box Development
>  j.kersing op the-box.com                         http://www.the-box.com 
> _______________________________________________
> Unix-gg mailing list
> Unix-gg op hobby.nl
> https://mail.hobby.nl/mailman/listinfo/unix-gg
> 
> 
> From toon op hout.vanvergehaald.nl Sun Mar 21 16:27:18 2004
> From: Toon van der Pas <toon op hout.vanvergehaald.nl>
> Subject: Re: [Unix-gg] case-sensitivity in bash
> To: unix-gg leden discussie lijst <unix-gg op hobby.nl>
> Date: Sun, 21 Mar 2004 16:44:32 +0100
> 
> 
> On Sun, Mar 21, 2004 at 04:49:26PM +0100, Jac Kersing wrote:
> > On Sun, 21 Mar 2004, Toon van der Pas wrote:
> > 
> > > Maar het onderhavige probleem gaat over de expansie van de character
> > > class [a-z]. Deze character class kan toch niet anders worden
> > > geïnterpreteerd dan als de reeks letters, startend met kleine letter 'a'
> > > en kleine letter 'z'. Is het plotseling onmogelijk geworden om dit soort
> > > character classes correct te laten matchen?
> > 
> > Zoals je in het artikel kunt lezen geldt voor sommige talen dat letter 
> > combinaties gelden als 1 letter. Dus is het niet simpel weg een rij van a, 
> > b, c ... z meer, maar een complexer geheel. Waarom daar opeen ook 
> > hoofdletters bij horen ontgaat mij op het moment ook.
> 
> Ik begrijp het probleem wel. (het sorteervolgorde-probleem uit het
> artikel)
> 
> En naast dit multi-character = één letter probleem speelt natuurlijk
> ook nog het volgende probleem: dient een ü ('u'-umlaut) te matchen
> met de characterset [a-z]?  Het probleem hierbij is dat alle
> character-codings elke combinatie van een letter met een accent
> beschouwen als een aparte letter, terwijl het natuurlijk eigenlijk
> een letter met een attribuut is.  Het is allemaal erg complex.
> 
> > Als ik (ooit) meer tijd heb duik ik er dieper in. Natuurlijk houd
> > ik me aanbevolen voor hints en tips van anderen die nu al het
> > naadje van de kous weten (of tijd hebben om dat nu te zoeken)
> 
> Zie mijn hint om openoffice.org correct te laten werken.
> 
> Groeten,
> Toon.
> -- 
> "Debugging is twice as hard as writing the code in the first place.
> Therefore, if you write the code as cleverly as possible, you are,
> by definition, not smart enough to debug it." - Brian W. Kernighan
> _______________________________________________
> Unix-gg mailing list
> Unix-gg op hobby.nl
> https://mail.hobby.nl/mailman/listinfo/unix-gg
> 
> 
> From wybo op servalys.nl Sun Mar 21 17:27:18 2004
> From: Wybo Dekker <wybo op servalys.nl>
> Subject: Re: [Unix-gg] case-sensitivity in bash
> To: unix-gg leden discussie lijst <unix-gg op hobby.nl>
> Date: Sun, 21 Mar 2004 17:27:18 +0100 (CET)
> 
> On Sun, 21 Mar 2004, Jac Kersing wrote:
> 
> > Environment variabele LANG. Zet 'm op LANG=C voor het oude gedrag.
> 
> Dat klopt, bedankt voor die tip, maar het kan haast niet het hele verhaal 
> zijn. Want op mijn beide machines stond LANG op en_US en de een had het 
> probleem, de ander niet. 
> 
> En zoals Toon al zei: het is wel heel vreemd dat dit gedrag 
> taalafhankelijk is. 
> 
> Ik heb het even voor alle talen in /usr/lib/locale geprobeerd:
> for i in /usr/lib/locale/*; do echo -n $i:;LANG=${i##*/}; ls [a-z]*; done
> en dan blijkt het (buiten C en POSIX) voor maar 37 van de 270 goed te 
> gaan.
> 
> -- 
> Wybo




More information about the Linux mailing list