\w, use locale a use utf8
Jan Kasprzak
kas na fi.muni.cz
Pondìlí Srpen 22 11:54:25 MEST 2005
Rozumite nekdo nasledujicimu chovani?
Pisu v ISO-8859-2 vstupni text i locale:
$ LC_ALL=cs_CZ.ISO-8859-2 perl -Mlocale -e '$_="aábcèdïeìéfghiíjklmnòoópqrøs¹t»uúùvwxyýz¾"; s/\W/-/g; print $_, "\n"'
aábcèdïeìéfghiíjklmnòoópqrøs¹t»uúùvwxyýz¾
To jsem ocekaval. Ted totez na UTF-8 systemu:
$ LC_ALL=en_US.UTF-8 perl -Mlocale -e '$_="aábcèdïeìéfghiíjklmnòoópqrøs¹t»uúùvwxyýz¾"; s/\W/-/g; print $_, "\n"'
a--bc--d--e----fghi--jklmn--o--pqr--s--t--u----vwxy--z--
Znaky mimo ascii jsou rozpoznany jako dvojice bajtu, coz je asi pochopitelne.
Zkusim teda doplnit -C kvuli vicebajtovemu vystupu a -Mutf8 kvuli zdrojovemu
textu v UTF-8:
$ LC_ALL=en_US.UTF-8 perl -C -Mutf8 -Mlocale -e '$_="aábcèdïeìéfghiíjklmnòoópqrøs¹t»uúùvwxyýz¾"; s/\W/-/g; print $_, "\n"'
a-bcèdïeì-fghi-jklmnòo-pqrøs¹t»u-ùvwxy-z¾
Pismena s carkou nejsou povazovana za pismena. Zkusim odstranit -Mlocale:
$ LC_ALL=en_US.UTF-8 perl -C -Mutf8 -e '$_="aábcèdïeìéfghiíjklmnòoópqrøs¹t»uúùvwxyýz¾"; s/\W/-/g; print $_, "\n"'
aábcèdïeìéfghiíjklmnòoópqrøs¹t»uúùvwxyýz¾
A najednou je vsechno OK. Tusite nekdo, kde je problem? Ja bych rekl
ze nekde v Linuxovych locales (chova se takto Fedora 2, Fedora 4,
SUSE SLES 9, ale nikoliv FreeBSD 5.4).
-Y.
--
| Jan "Yenya" Kasprzak <kas at {fi.muni.cz - work | yenya.net - private}> |
| GPG: ID 1024/D3498839 Fingerprint 0D99A7FB206605D7 8B35FCDE05B18A5E |
| http://www.fi.muni.cz/~kas/ Czech Linux Homepage: http://www.linux.cz/ |
>>> $ cd my-kernel-tree-2.6 <<<
>>> $ dotest /path/to/mbox # yes, Linus has no taste in naming scripts <<<
Dal¹í informace o konferenci Perl