import os # https://msdn.microsoft.com/en-us/library/windows/desktop/dd317756(v=vs.85).aspx windows_codecs = { 'cp1252', # Standard Windows 'cp1251', # Russian 'cp037', 'cp424', 'cp437', 'cp500', 'cp720', 'cp737', 'cp775', 'cp850', 'cp852', 'cp855', 'cp856', 'cp857', 'cp858', 'cp860', 'cp861', 'cp862', 'cp863', 'cp864', 'cp865', 'cp866', 'cp869', 'cp874', 'cp875', 'cp932', 'cp949', 'cp950', 'cp1006', 'cp1026', 'cp1140', 'cp1250', 'cp1253', 'cp1254', 'cp1255', 'cp1256', 'cp1257', 'cp1258', } linux_codecs = { 'utf_8', # Generic Linux/Mac } mac_codecs = [ 'utf_8', # Generic Linux/Mac 'mac_cyrillic', 'mac_greek', 'mac_iceland', 'mac_latin2', 'mac_roman', 'mac_turkish', ] universal_codecs = [ 'utf_16', 'utf_32', 'utf_32_be', 'utf_32_le', 'utf_16_be', 'utf_16_le', 'utf_7', 'utf_8_sig', ] other_codecs = [ 'scii', 'big5', 'big5hkscs', 'euc_jp', 'euc_jis_2004', 'euc_jisx0213', 'euc_kr', 'gb2312', 'gbk', 'gb18030', 'hz', 'iso2022_jp', 'iso2022_jp_1', 'iso2022_jp_2', 'iso2022_jp_2004', 'iso2022_jp_3', 'iso2022_jp_ext', 'iso2022_kr', 'latin_1', 'iso8859_2', 'iso8859_3', 'iso8859_4', 'iso8859_5', 'iso8859_6', 'iso8859_7', 'iso8859_8', 'iso8859_9', 'iso8859_10', 'iso8859_11', 'iso8859_13', 'iso8859_14', 'iso8859_15', 'iso8859_16', 'johab', 'koi8_r', 'koi8_u', 'ptcp154', 'shift_jis', 'shift_jis_2004', 'shift_jisx0213' ] system_names = { 'Windows': windows_codecs, 'Linux': linux_codecs, 'Darwin': mac_codecs, } def GetPath(root, file=None, codec=None): # Replace this with the function we actually use for this path = os.path.realpath(os.path.abspath(root)) if file: path = os.path.join(path, file) if codec: path = path.decode(codec) return path def GetUnicodePath(root, file=None, codec=None): # Replace this with the function we actually use for this path = os.path.realpath(os.path.abspath(root)) if file: path = os.path.join(path, file) if codec: path = str(path, codec) else: path = str(path) return path