mirror of
https://github.com/beetbox/beets.git
synced 2026-02-13 10:51:59 +01:00
Avoid stdout encoding issues (#2393)
This commit is contained in:
parent
958ad430fc
commit
5233e0fcdd
2 changed files with 14 additions and 6 deletions
|
|
@ -126,8 +126,7 @@ def print_(*strings, **kwargs):
|
|||
Python 3.
|
||||
|
||||
The `end` keyword argument behaves similarly to the built-in `print`
|
||||
(it defaults to a newline). The value should have the same string
|
||||
type as the arguments.
|
||||
(it defaults to a newline).
|
||||
"""
|
||||
if not strings:
|
||||
strings = [u'']
|
||||
|
|
@ -136,11 +135,17 @@ def print_(*strings, **kwargs):
|
|||
txt = u' '.join(strings)
|
||||
txt += kwargs.get('end', u'\n')
|
||||
|
||||
# Send bytes to the stdout stream on Python 2.
|
||||
# Encode the string and write it to stdout.
|
||||
txt = txt.encode(_out_encoding(), 'replace')
|
||||
if six.PY2:
|
||||
txt = txt.encode(_out_encoding(), 'replace')
|
||||
|
||||
sys.stdout.write(txt)
|
||||
# On Python 2, sys.stdout expects bytes.
|
||||
sys.stdout.write(txt)
|
||||
else:
|
||||
# On Python 3, sys.stdout expects text strings and uses the
|
||||
# exception-throwing encoding error policy. To avoid throwing
|
||||
# errors and use our configurable encoding override, we use the
|
||||
# underlying bytes buffer instead.
|
||||
sys.stdout.buffer.write(txt)
|
||||
|
||||
|
||||
# Configuration wrappers.
|
||||
|
|
|
|||
|
|
@ -24,6 +24,9 @@ Fixes:
|
|||
* :doc:`/plugins/replaygain`: Fix Python 3 compatibility in the ``bs1770gain``
|
||||
backend. :bug:`2382`
|
||||
* :doc:`/plugins/bpd`: Report playback times as integer. :bug:`2394`
|
||||
* On Python 3, the :ref:`terminal_encoding` setting is respected again for
|
||||
output and printing will no longer crash on systems configured with a
|
||||
limited encoding.
|
||||
|
||||
|
||||
1.4.3 (January 9, 2017)
|
||||
|
|
|
|||
Loading…
Reference in a new issue