LINUX.ORG.RU

История изменений

Исправление 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, то их и используй.

во втором варианте - пытаться определить кодировку текста перед загрузкой

Если у тебя текст в чёрт знает каких кодировках, то зачем ты с ними работаешь, как с текстом? Работай с потоками байт. Или невозможно?