This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author chris.jerdonek
Recipients chris.jerdonek
Date 2012-08-08.21:36:13
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1344461775.23.0.274836365722.issue15595@psf.upfronthosting.co.za>
In-reply-to
Content
subprocess.Popen() with universal_newlines=True does not convert line breaks correctly when the preferred encoding is UTF-16.  For example, the following code--

code = r"import sys; sys.stdout.buffer.write('a\r\nb'.encode('utf-16'))"
args = [sys.executable, '-c', code]
popen = Popen(args, universal_newlines=True, stdin=PIPE, stdout=PIPE)
print(popen.communicate(input=''))

yields--

('a\n\nb', None)

instead of--

('a\nb', None)

The reason is that the code attempts to convert newlines before decoding to unicode instead of after:

http://hg.python.org/cpython/file/85266c6f9ae4/Lib/subprocess.py#l830

I am attaching a failing test case.  I will upload a patch shortly.

Also see the related documentation issue 15561.
History
Date User Action Args
2012-08-08 21:36:15chris.jerdoneksetrecipients: + chris.jerdonek
2012-08-08 21:36:15chris.jerdoneksetmessageid: <1344461775.23.0.274836365722.issue15595@psf.upfronthosting.co.za>
2012-08-08 21:36:14chris.jerdoneklinkissue15595 messages
2012-08-08 21:36:14chris.jerdonekcreate