Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 28, 2015 00:23:51

maxim83632
Зарегистрирован: 2015-03-24
Сообщения: 34
Репутация: +  0  -
Профиль   Отправить e-mail  

Как определить кодировку ФС?

Хочу определять кодировку ФС, чтобы правильно обрабатывать те символы, которые она не поддерживает. Чтобы в итоге имя файла не было исковеркано. Подскажите как это сделать?

Офлайн

#2 Апрель 28, 2015 00:52:31

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Как определить кодировку ФС?

maxim83632
чтобы правильно обрабатывать те символы, которые она не поддерживает
а это интересно
ну к примеру вы смогли определить кодировку и что дальше?
мне вот очень интересно
можно хоть фрагмент кода? или же я неправильно понял…



————————————————
-*- Simple is better than complex -*-

Офлайн

#3 Апрель 28, 2015 02:22:13

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Как определить кодировку ФС?

Есть вот такая функция модуля 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’.
насколько она будет вам полезна - я не могу сказать точно. Ведь Вы не уточнили ни ОС ни типы ФС которые используете.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#4 Апрель 28, 2015 11:02:31

maxim83632
Зарегистрирован: 2015-03-24
Сообщения: 34
Репутация: +  0  -
Профиль   Отправить e-mail  

Как определить кодировку ФС?

JOHN_16
Не уточнял потому, что стараюсь, чтобы все заработало как минимум на 2 осях (windows and linux).

terabayt
ну к примеру вы смогли определить кодировку и что дальше?
Ну я буду строку с названием будующего файла перегонять в нужную кодировку и там уже смотреть как обрабатывать сиволы, которые не поддерживаются этой кодировкой (для первого теста просто удалю их, чтобы файл вообще можно было сохранть под таким именем. В дальнейшем может накропаю какую нибудь замену на похожие символы или что-то в этом духе. Пока есть, проблема, что под win файлы вообще не сохраняются если в них есть специфичные utf8 символы.)

Отредактировано maxim83632 (Апрель 28, 2015 11:06:03)

Офлайн

#5 Апрель 28, 2015 14:49:55

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Как определить кодировку ФС?

maxim83632
специфичные utf8 символы
это какие? я для примера сохранил файл с названием на немецком. на WinXP, ntfs - сохранилось, потоvу что UTF-8



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#6 Апрель 28, 2015 23:26:37

maxim83632
Зарегистрирован: 2015-03-24
Сообщения: 34
Репутация: +  0  -
Профиль   Отправить e-mail  

Как определить кодировку ФС?

Сейчас тестил приложение, выяснилось, что ошибки вылазили из-за того, что в именах файлов были символы запрещённые ФС (<? и т д).

Офлайн

#7 Апрель 29, 2015 03:25:09

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Как определить кодировку ФС?

ну вот, все оказалось как обычно гораздо проще.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#8 Апрель 29, 2015 07:14:16

maxim83632
Зарегистрирован: 2015-03-24
Сообщения: 34
Репутация: +  0  -
Профиль   Отправить e-mail  

Как определить кодировку ФС?

JOHN_16
Да, я слишком заморочился)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version