Найти - Пользователи
Полная версия: Кодировка ftplib
Начало » Network » Кодировка ftplib
1 2
andreiru
Здравствуйте!

Хожу по ftp при помощи ftplib, получаю список файлов ftp.retrlines('LIST'), но имена некоторых файлов отображаются крякозябрами, подскажите как правильно перекодировать имена в utf8 для записи в БД ?!

Пробовал вот так:
def decodePath(str):
try:
return str.decode('cp1251').encode('utf8')
except:
return str
Работает но всё равно некоторые имена в кракозябрах
mr.pihto
мб. там ещё какието кодировки…
pyuser
я с подобной проблемой сталкивался в третьем питоне и в 2.7 с unicode_literals, решилось так:
ftp = ftplib.FTP(...)
ftp.__class__.encoding = sys.getfilesystemencoding()
попробуйте, возможно и Вам поможет
andreiru
pyuser спасибо огромное, помогло !
andreiru
pyuser
Правда без этой функции не работает:

def decodePath(str):
try:
return str.decode('cp1251').encode('utf8')
except:
return str
Вы в своем варианте использовали что то подобное этой функции ?
pyuser
у меня была совсем другая задача, поэтому меня вполне устраивало то, что кодировка совпадает с кодировкой файловой системы :)
а Вашу функцию я бы написал так:
def decodePath(path):
if isinstance(path, str):
path = path.decode(sys.getfilesystemencoding())
return path.encode("utf-8")
andreiru
pyuser
Ваша функция не работает =(

UnicodeDecodeError: 'utf8' codec can't decode bytes in position 21-22: invalid data
pyuser
какая версия питона? на какую строку ругается?
andreiru
Версия: 2.5.2-3
Строка:
path = path.decode(sys.getfilesystemencoding())
pyuser
А ось какая? А вместо path = path.decode(sys.getfilesystemencoding()) пробовали path = path.decode(“cp1251”)?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB