Read Unicode characters from command-line arguments in Python 2.x on Windows
2013-12-13 21:07
579 查看
Ref:
[1] http://stackoverflow.com/questions/846850/read-unicode-characters-from-command-line-arguments-in-python-2-x-on-windows/846931#846931
[2] http://code.activestate.com/recipes/572200/
Reading unicode character from command-line arguments in python 2.x is kinda shit... I tried my code for weeks and now I found one feasible solution via stackoverflow:
Usage:
=> run the code before getting argument value from the command-line.
[1] http://stackoverflow.com/questions/846850/read-unicode-characters-from-command-line-arguments-in-python-2-x-on-windows/846931#846931
[2] http://code.activestate.com/recipes/572200/
Reading unicode character from command-line arguments in python 2.x is kinda shit... I tried my code for weeks and now I found one feasible solution via stackoverflow:
def win32_utf8_argv(): """Uses shell32.GetCommandLineArgvW to get sys.argv as a list of UTF-8 strings. Versions 2.5 and older of Python don't support Unicode in sys.argv on Windows, with the underlying Windows API instead replacing multi-byte characters with '?'. Returns None on failure. Example usage: >>> def main(argv=None): ... if argv is None: ... argv = win32_utf8_argv() or sys.argv ... """ try: from ctypes import POINTER, byref, cdll, c_int, windll from ctypes.wintypes import LPCWSTR, LPWSTR GetCommandLineW = cdll.kernel32.GetCommandLineW GetCommandLineW.argtypes = [] GetCommandLineW.restype = LPCWSTR CommandLineToArgvW = windll.shell32.CommandLineToArgvW CommandLineToArgvW.argtypes = [LPCWSTR, POINTER(c_int)] CommandLineToArgvW.restype = POINTER(LPWSTR) cmd = GetCommandLineW() argc = c_int(0) argv = CommandLineToArgvW(cmd, byref(argc)) if argc.value > 0: # Remove Python executable if present if argc.value - len(sys.argv) == 1: start = 1 else: start = 0 return [argv[i].encode('utf-8') for i in xrange(start, argc.value)] except Exception: pass
Usage:
=> run the code before getting argument value from the command-line.
相关文章推荐
- [RT] Twitter from the command line in python using OAuth
- Windows SDK Registry: How can I read in data from the registry?
- How to Take Ownership of a File/Folder Using Command-Line in Windows 7 or newer version System
- compilation terminated. In file included from <command-line>:0:0: /usr/include/stdc-predef.h:30:26:
- [quote] How to determine what target is given in Makefile from the make command-line?
- How to find a file or folder in MS-DOS or Windows command line
- Atom python3 UnicodeEncodeError: 'ascii' codec can't encode characters in position
- python-swifclient UnicodeEncodeError: 'ascii' codec can't encode characters in position 10-11: ordin
- How to pass macro definition from “makefile” command line arguments to C source code?
- 解决Python写入文件编码问题(UnicodeEncodeError: 'ascii' codec can't encode characters in...)
- Running Your iOS App in the Simulator From The Command Line
- Installing packages into Canopy User Python from the OS command line
- Use command line arguments in Node.js
- Managing Windows Programs from the Command Line: Tasklist
- Calling JNI Functions with Java Object Arguments from the Command Line
- How do I read image data from a URL in Python ?
- docker python 提示错误UnicodeEncodeError: 'ascii' codec can't encode characters in position
- python编码问题 -- UnicodeEncodeError: 'ascii' codec can't encode characters in position
- Import data in a Lookup Definition from the command-line
- 如何在Windows下开发Python:在cmd下运行Python脚本+如何使用Python Shell(command line模式和GUI模式)+如何使用Python IDE