30 декабря 2007

Про Python и работу с не unicode файловыми системами

Для хранения текстовой информации используется unicode, это аксиома.
Однако, бывают ситуации, когда это невозможно. Простейший пример - ФС вроде vfat, которые не только не поддерживают юникод, но и имеют определённые ограничения на имена файлов (подробнее - тут). Несмотря на это она повсеместно используется во всевозможных девайсах от USB Mass Storage или, проще говоря, флэшек и заканчивая кпк и фотоаппаратами.
Обходится это достаточно просто, вот кусок кода на питоне:

enc = os.environ['LANG'].split(".")[1]
str = re.sub('[|?*<>:+\[\]\"\\\]*','',str.encode(enc,"ignore"))
Я это использовал для приведения имён файлов к своей локали для дальнейшего копирования на смонтированную флэшку.
Happy coding!

Комментариев нет: