2010-02-24 4 views
0

Я хочу написать папку в системе Windows, Vista и Win7 с файловыми системами NTFS. Папки могут содержать символы å, ä и/или ö, «förjävligt», например.Файловая система Python и windows с символами none-ascii

Файлы python и каждая строка в нем в настоящее время находятся в UTF-8, как его преобразовать в набор файловой системы Windows?

ответ

3

Если вы работаете с обычными Python 2 строки, вы можете просто конвертировать их в Unicode

# -*- coding: utf-8 -*- 
normalString = "äöü" 

# Now convert to unicode. Specified encoding must match the file encoding 
# in this example. In general, you must specify how the bytes-only string 
# contained in "normalString" is encoded. 
unicodeString = unicode(normalString, "utf-8") 

with open(unicodeString, "w") as f: 
    ... 

и создавать файлы, используя эти строки Unicode. Python (и косвенно Windows API) позаботится обо всем остальном.

1

Если вы хотите, чтобы строки действительно приятно работать в окнах, вы можете использовать этот safeFilenameCodec. Это подмножество допустимых персонажей, но вам не придется беспокоиться о том, чтобы провалиться. И он имеет щедрую лицензию.

+0

Эта библиотека должна называться «uglyFilenamesCodec». Он работает, но имена файлов не будут очень удобочитаемыми. Я создал подобную библиотеку для именования музыкальных файлов (экранирует символы, такие как \ /: *? "<> | В названии песни), но я бы не использовал такое решение для * all * filenames. В любом случае +1 для предложения. – AndiDog