在POSIX系統上,它完全取決於您的控制檯或終端如何配置這些字符串使用的編碼。
在這些環境中,使用locale.getpreferredencoding()
來查詢配置了什麼編碼,然後用它來解碼字符串。這是不是萬無一失的,但應該在控制檯或終端正確配置時工作。
在特定情況下,你可能使用的是Windows系統配置爲使用Windows Codepage 1252:
>>> '\x80'.decode('cp1252')
u'\u20ac'
>>> print '\x80'.decode('cp1252')
€
Windows不提供GetCommandLineW()
和CommandLineToArgvW()
功能檢索命令行的Unicode值,然後解析那個值變成了一個類似於argv
的數組;從Python使用這個可以用ctypes
library來完成;釋義this example這是你如何使用它:
from ctypes import WINFUNCTYPE, windll, POINTER, byref, c_int
from ctypes.wintypes import LPWSTR, LPCWSTR
GetCommandLineW = WINFUNCTYPE(LPWSTR)(("GetCommandLineW", windll.kernel32))
CommandLineToArgvW = WINFUNCTYPE(POINTER(LPWSTR), LPCWSTR, POINTER(c_int))(("CommandLineToArgvW", windll.shell32))
argc = c_int(0)
argv_unicode = CommandLineToArgvW(GetCommandLineW(), byref(argc))
您正在使用的操作系統會影響您編程的參數的編碼方式。你在使用什麼操作系統? –