История изменений
Исправление proud_anon, (текущая версия) :
У меня пока только грязные хаки на ум приходят: в первом варианте - транслитерировать имена файлов
Ну ведь имя файла [EDIT: имя, не содержимое, хотя и содержимое тоже] может быть произвольной последовательностью байт. Если os.fsencode не работает (что при неправильно выставленной локали может быть), то предварительно сделай filename = bytes(filename, 'UTF-8')
(или наоборот, filename = str(filename, 'UTF-8')
, или как тебе надо. Если уже есть готовые имена файлов в виде bytes, то их и используй.
во втором варианте - пытаться определить кодировку текста перед загрузкой
Если у тебя данные в чёрт знает какой кодировке, то зачем ты с ними работаешь, как с текстом? Работай с потоками байт. Или невозможно?
Вообще говоря, что именно ты делаешь с этими текстами?
Исправление proud_anon, :
У меня пока только грязные хаки на ум приходят: в первом варианте - транслитерировать имена файлов
Ну ведь имя файла [EDIT: имя, не содержимое, хтя и содержимое тоже] может быть произвольной последовательностью байт. Если os.fsencode не работает (что при неправильно выставленной локали может быть), то предварительно сделай filename = bytes(filename, 'UTF-8')
(или наоборот, filename = str(filename, 'UTF-8')
, или как тебе надо. Если уже есть готовые имена файлов в виде bytes, то их и используй.
во втором варианте - пытаться определить кодировку текста перед загрузкой
Если у тебя данные в чёрт знает какой кодировке, то зачем ты с ними работаешь, как с текстом? Работай с потоками байт. Или невозможно?
Вообще говоря, что именно ты делаешь с этими текстами?
Исправление proud_anon, :
У меня пока только грязные хаки на ум приходят: в первом варианте - транслитерировать имена файлов
Ну ведь содержимое файла может быть произвольной последовательностью байт. Если os.fsencode не работает (что при неправильно выставленной локали может быть), то предварительно сделай filename = bytes(filename, 'UTF-8')
(или наоборот, filename = str(filename, 'UTF-8')
, или как тебе надо. Если уже есть готовые имена файлов в виде bytes, то их и используй.
во втором варианте - пытаться определить кодировку текста перед загрузкой
Если у тебя данные в чёрт знает какой кодировке, то зачем ты с ними работаешь, как с текстом? Работай с потоками байт. Или невозможно?
Вообще говоря, что именно ты делаешь с этими текстами?
Исправление proud_anon, :
У меня пока только грязные хаки на ум приходят: в первом варианте - транслитерировать имена файлов
Ну ведь содержимое файла может быть произвольной последовательностью байт. Если os.fsencode не работает (что при неправильно выставленной локали может быть), то предварительно сделай filename = bytes(filename, 'UTF-8')
(или наоборот, filename = str(filename, 'UTF-8')
, или как тебе надо. Если уже есть готовые имена файлов в виде bytes, то их и используй.
во втором варианте - пытаться определить кодировку текста перед загрузкой
Если у тебя текст в чёрт знает каких кодировках, то зачем ты с ними работаешь, как с текстом? Работай с потоками байт. Или невозможно?
Вообще говоря, что именно ты делаешь с этими текстами?
Исходная версия proud_anon, :
У меня пока только грязные хаки на ум приходят: в первом варианте - транслитерировать имена файлов
Ну ведь содержимое файла может быть произвольной последовательностью байт. Если os.fsencode не работает (что при неправильно выставленной локали может быть), то предварительно сделай filename = bytes(filename, 'UTF-8')
(или наоборот, filename = str(filename, 'UTF-8')
, или как тебе надо. Если уже есть готовые имена файлов в виде bytes, то их и используй.
во втором варианте - пытаться определить кодировку текста перед загрузкой
Если у тебя текст в чёрт знает каких кодировках, то зачем ты с ними работаешь, как с текстом? Работай с потоками байт. Или невозможно?