Message167719
| 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:15 | chris.jerdonek | set | recipients:
+ chris.jerdonek |
| 2012年08月08日 21:36:15 | chris.jerdonek | set | messageid: <1344461775.23.0.274836365722.issue15595@psf.upfronthosting.co.za> |
| 2012年08月08日 21:36:14 | chris.jerdonek | link | issue15595 messages |
| 2012年08月08日 21:36:14 | chris.jerdonek | create |
|