"env" parameter to "popen" won't accept Unicode on Windows - minor Unicode bug

John Nagle nagle at animats.com
Tue Jan 15 15:21:48 EST 2008


Diez B. Roggisch wrote:
> John Nagle wrote:
> 
>> Benjamin wrote:
>>> On Jan 14, 6:26 pm, Bjoern Schliessmann <usenet-
>>> mail-0306.20.chr0n... at spamgourmet.com> wrote:
>>>> John Nagle wrote:
>>>>> It turns out that the strings in the "env" parameter have to be
>>>>> ASCII, not Unicode, even though Windows fully supports Unicode in
>>>>> CreateProcess.
> 
> That's of course nonsense, they don't need to be ascii, they need to be
> byte-strings in whatever encoding you like.
> 
>>>> Are you sure it supports Unicode, not UTF8 or UTF16? Probably using
>>>> something like u"thestring".encode("utf16") will help.
>>> Otherwise: bugs.python.org
> 
> John's understanding of the differences between unicode and it's encodings
> is a bit blurry, to say the least.

    Who's this guy?
> 
>>      Whatever translation is necessary should be done in "popen", which
>> has cases for Windows and POSIX.  "popen" is supposed to be cross-platform
>> to the extent possible.  I think it's just something that didn't get fixed
>> when Unicode support went in.

    I've been looking at the source code.  There's "_PyPopenCreateProcess"
in "posixmodule.c".    That one doesn't support passing an environment at
all; see the call to Windows CreateProcess.  Is that the one that Popen uses?

    Where is "win32process" in the source?  It ought to be in Modules, but
it's not.

					John Nagle



More information about the Python-list mailing list