mirror of
https://codeberg.org/polarisfm/youtube-dl.git
synced 2024-12-24 16:51:36 +00:00
Use our own encoding when writing strings
This commit is contained in:
parent
c3855d28b0
commit
104aa7388a
1 changed files with 7 additions and 14 deletions
|
@ -917,21 +917,14 @@ def write_string(s, out=None, encoding=None):
|
||||||
|
|
||||||
if ('b' in getattr(out, 'mode', '') or
|
if ('b' in getattr(out, 'mode', '') or
|
||||||
sys.version_info[0] < 3): # Python 2 lies about mode of sys.stderr
|
sys.version_info[0] < 3): # Python 2 lies about mode of sys.stderr
|
||||||
s = s.encode(encoding or preferredencoding(), 'ignore')
|
byt = s.encode(encoding or preferredencoding(), 'ignore')
|
||||||
try:
|
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)
|
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()
|
out.flush()
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue