Я столкнулся с огромной проблемой кодирования в Python при работе с набором символов ISO-8859-1 / Latin-1.
При использовании os.listdir
для получения содержимого папки я получаю строки, закодированные в ISO-8859-1 (например: `` Ol \ xe1 Mundo ''), однако в интерпретаторе Python та же строка кодируется в другой кодировке :
In : 'Olá Mundo'.decode('latin-1')
Out: u'Ol\xa0 Mundo'
Как я могу заставить Python декодировать строку в тот же формат ?. Я видел, что os.listdir
возвращает строки, закодированные правильно, но интерпретатор - нет (символ 'á' соответствует '\ xe1' в ISO-8859-1, а не '\ xa0'):
http://en.wikipedia.org/wiki/ISO/IEC_8859-1
Есть мысли как побороть?
os.listdir()
возвращает байты. Процесс, назвавший файл, решил дать файлу имя с определенной интерпретацией в iso-8859-1. Имена файлов с таким же успехом можно было бы сохранить в BIG-5 или JIS, иos.listdir()
это не заботило бы. - person sarnold   schedule 13.11.2011os.listdir()
может возвращать строки или байты: это зависит от того, что вы передаете, и от содержимого каталога. - person Thanatos   schedule 14.11.2011