diff --git a/mercurial/win32.py b/mercurial/win32.py --- a/mercurial/win32.py +++ b/mercurial/win32.py @@ -579,10 +579,11 @@ def spawndetached(args): env = '\0' env += '\0' - args = subprocess.list2cmdline(args) + args = subprocess.list2cmdline(pycompat.rapply(encoding.strfromlocal, args)) + # TODO: CreateProcessW on py3? res = _kernel32.CreateProcessA( - None, args, None, None, False, _CREATE_NO_WINDOW, + None, encoding.strtolocal(args), None, None, False, _CREATE_NO_WINDOW, env, pycompat.getcwd(), ctypes.byref(si), ctypes.byref(pi)) if not res: raise ctypes.WinError() diff --git a/mercurial/windows.py b/mercurial/windows.py --- a/mercurial/windows.py +++ b/mercurial/windows.py @@ -523,7 +523,7 @@ def rename(src, dst): os.rename(src, dst) def gethgcmd(): - return [sys.executable] + sys.argv[:1] + return [encoding.strtolocal(arg) for arg in [sys.executable] + sys.argv[:1]] def groupmembers(name): # Don't support groups on Windows for now