Найти - Пользователи
Полная версия: Как определить кодировку ФС?
Начало » Python для новичков » Как определить кодировку ФС?
1
maxim83632
Хочу определять кодировку ФС, чтобы правильно обрабатывать те символы, которые она не поддерживает. Чтобы в итоге имя файла не было исковеркано. Подскажите как это сделать?
terabayt
maxim83632
чтобы правильно обрабатывать те символы, которые она не поддерживает
а это интересно
ну к примеру вы смогли определить кодировку и что дальше?
мне вот очень интересно
можно хоть фрагмент кода? или же я неправильно понял…
JOHN_16
Есть вот такая функция модуля 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’.
насколько она будет вам полезна - я не могу сказать точно. Ведь Вы не уточнили ни ОС ни типы ФС которые используете.
maxim83632
JOHN_16
Не уточнял потому, что стараюсь, чтобы все заработало как минимум на 2 осях (windows and linux).

terabayt
ну к примеру вы смогли определить кодировку и что дальше?
Ну я буду строку с названием будующего файла перегонять в нужную кодировку и там уже смотреть как обрабатывать сиволы, которые не поддерживаются этой кодировкой (для первого теста просто удалю их, чтобы файл вообще можно было сохранть под таким именем. В дальнейшем может накропаю какую нибудь замену на похожие символы или что-то в этом духе. Пока есть, проблема, что под win файлы вообще не сохраняются если в них есть специфичные utf8 символы.)
JOHN_16
maxim83632
специфичные utf8 символы
это какие? я для примера сохранил файл с названием на немецком. на WinXP, ntfs - сохранилось, потоvу что UTF-8
maxim83632
Сейчас тестил приложение, выяснилось, что ошибки вылазили из-за того, что в именах файлов были символы запрещённые ФС (<? и т д).
JOHN_16
ну вот, все оказалось как обычно гораздо проще.
maxim83632
JOHN_16
Да, я слишком заморочился)
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