Форум сайта python.su
0
Хочу определять кодировку ФС, чтобы правильно обрабатывать те символы, которые она не поддерживает. Чтобы в итоге имя файла не было исковеркано. Подскажите как это сделать?
Офлайн
103
maxim83632а это интересно
чтобы правильно обрабатывать те символы, которые она не поддерживает
Офлайн
221
Есть вот такая функция модуля sys:
sys.getfilesystemencoding()насколько она будет вам полезна - я не могу сказать точно. Ведь Вы не уточнили ни ОС ни типы ФС которые используете.
Return the name of the encoding used to convert Unicode filenames into system file names, or None if the system default encoding is used. The result value depends on the operating system:
On Mac OS X, the encoding is ‘utf-8’.
On Unix, the encoding is the user’s preference according to the result of nl_langinfo(CODESET), or None if the nl_langinfo(CODESET) failed.
On Windows NT+, file names are Unicode natively, so no conversion is performed. getfilesystemencoding() still returns ‘mbcs’, as this is the encoding that applications should use when they explicitly want to convert Unicode strings to byte strings that are equivalent when used as file names.
On Windows 9x, the encoding is ‘mbcs’.
Офлайн
0
JOHN_16
Не уточнял потому, что стараюсь, чтобы все заработало как минимум на 2 осях (windows and linux).
terabaytНу я буду строку с названием будующего файла перегонять в нужную кодировку и там уже смотреть как обрабатывать сиволы, которые не поддерживаются этой кодировкой (для первого теста просто удалю их, чтобы файл вообще можно было сохранть под таким именем. В дальнейшем может накропаю какую нибудь замену на похожие символы или что-то в этом духе. Пока есть, проблема, что под win файлы вообще не сохраняются если в них есть специфичные utf8 символы.)
ну к примеру вы смогли определить кодировку и что дальше?
Отредактировано maxim83632 (Апрель 28, 2015 11:06:03)
Офлайн
221
maxim83632это какие? я для примера сохранил файл с названием на немецком. на WinXP, ntfs - сохранилось, потоvу что UTF-8
специфичные utf8 символы
Офлайн
0
Сейчас тестил приложение, выяснилось, что ошибки вылазили из-за того, что в именах файлов были символы запрещённые ФС (<? и т д).
Офлайн
221
ну вот, все оказалось как обычно гораздо проще.
Офлайн
0
JOHN_16
Да, я слишком заморочился)
Офлайн