Форум сайта python.su
2
есть например код(взят отсюда http://docs.python.org/release/2.6.6/howto/unicode.html#unicode-filenames):
filename = u'filename\u4500abc'
f = open(filename, 'w')
f.write('blah\n')
f.close()
Офлайн
2
А вы то что вокруг этого примера читать пробовали?
Там сказано, что питон конвертирует уникодные имена в ту кодировку, каторая настроенная в ОС. У вас эта кодировка ASCII. А она, не может переварить символы которые не влезают в 128 первых.
Офлайн
0
Ubuntu 11.04, Python 2.7.1:
Ошибок нет, но в имени файла присутствует эта кракозябра :)
u"/u4500" == 䔀
Отредактировано (Май 28, 2011 14:44:58)
Офлайн
2
Александр Кошелевя и спрашиваю, что конкретно нужно поменять и где, чтобы поменять кодировку. Что делать с этими LANG or LC_CTYPE?
А вы то что вокруг этого примера читать пробовали?
Там сказано, что питон конвертирует уникодные имена в ту кодировку, каторая настроенная в ОС. У вас эта кодировка ASCII. А она, не может переварить символы которые не влезают в 128 первых.
Офлайн
32
у меня работает (ubuntu 11.04 + py 2.7.1):
>>> fname = u'/tmp/filename\u4500abc'
>>> f = open(fname,'w')
>>> f.write('ok')
f = open(fname.encode('utf8'),'w')Офлайн
2
нужно было установить локаль и задать соответственно переменную окружения LANG
для Debian и Ubuntu:
localedef -i ru_RU-f UTF-8 ru_RU.UTF-8
export LANG=ru_RU.UTF-8
Офлайн