Dobrý den, On 12/1/06, Novák Jan - Topinfo s.r.o. <[EMAIL PROTECTED]> wrote: > Narazil jsem na zajímavé chování os.listdir, pokud máte v souborech > diakritiku. > Co myslíte, je to chyba, není to chyba? Minimálně by to mělo být uvedeno v > dokumentaci! > > Je-li na Linuxu kódování utf-8, chyba se projevila pouze v běhu scriptu přes > CGI? (tak na to přišel kolega který pracoval na Fedoře s utf-8), pokud ne > projeví se to vždy. Ve 2.5 nevím jak se to chová? > > os.listdir Python documentace > Changed in version 2.3: On Windows NT/2k/XP and Unix, if path is a Unicode > object, the result will be a list of Unicode objects.. > > http://kofoto.rosdahl.net/trac/wiki/UnicodeInPython > os.listdir(u"path") returns Unicode strings for names that can be decoded > with sys.getfilesystemencoding() but silently returns byte strings for names > that can't be decoded. That is, the return value of os.listdir(u"path") is > potentially a mixed list of Unicode and byte strings. > > Python/2.4.2 (WXP) > >>> import os, sys > >>> sys.getfilesystemencoding() > 'mbcs' > >>> os.listdir(u'path') > ['aaa.txt', 'bbb.txt', '\xe8e\x9atina.txt', 'ccc.txt'] > >>> os.listdir(u'path') > [u'aaa.txt', u'bbb.txt', u'\u010de\u0161tina.txt', u'ccc.txt'] > >>> ...OK 3. je unicode > > Python/2.4.4 (Debian) > >>> import os, sys > >>> sys.getfilesystemencoding() > 'ANSI_X3.4-1968' > >>> os.listdir('path') > ['aaa.txt', 'bbb.txt', '\xe8e\xb9tina.txt', 'ccc.txt'] > >>> os.listdir(u'path') > [u'aaa.txt', u'bbb.txt', '\xe8e\xb9tina.txt', u'ccc.txt'] > >>> ...? 3. není unicode >
podle mě se to chová přesně, jak se píše na http://kofoto.rosdahl.net/trac/wiki/UnicodeInPython, '\xe8e\xb9tina.txt' není asi v kódování ANSI_X3.4-1968 (netuším jaké to je) a proto není převedeno na unicode. Problém bude zřejmě v nastavení locales, u mě vrací >>> sys.getfilesystemencoding() 'ISO-8859-2' a os.lisdir(u'...') funguje správně i na české jména souborů. Pokud spustím python jako LC_ALL=C python chová se to úplně stejně jako ve Vašem případě. S pozdravem Petr Hlávka. _______________________________________________ Python mailing list [email protected] http://www.py.cz/mailman/listinfo/python
