102 lines
2.2 KiB
Python
102 lines
2.2 KiB
Python
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
|