diff options
Diffstat (limited to 'youtube_dl/utils.py')
| -rw-r--r-- | youtube_dl/utils.py | 21 | 
1 files changed, 7 insertions, 14 deletions
diff --git a/youtube_dl/utils.py b/youtube_dl/utils.py index f53db0228..68424aeb6 100644 --- a/youtube_dl/utils.py +++ b/youtube_dl/utils.py @@ -917,21 +917,14 @@ def write_string(s, out=None, encoding=None):      if ('b' in getattr(out, 'mode', '') or              sys.version_info[0] < 3):  # Python 2 lies about mode of sys.stderr -        s = s.encode(encoding or preferredencoding(), 'ignore') -    try: +        byt = s.encode(encoding or preferredencoding(), 'ignore') +        out.write(byt) +    elif hasattr(out, 'buffer'): +        enc = encoding or getattr(out, 'encoding', None) or preferredencoding() +        byt = s.encode(enc, 'ignore') +        out.buffer.write(byt) +    else:          out.write(s) -    except UnicodeEncodeError: -        # In Windows shells, this can fail even when the codec is just charmap!? -        # See https://wiki.python.org/moin/PrintFails#Issue -        if sys.platform == 'win32': -            if not encoding and hasattr(out, 'encoding'): -                encoding = out.encoding -            if encoding: -                b = s.encode(encoding, 'ignore').decode(encoding) -                out.write(b) -        else: -            raise -      out.flush()  | 
