From 89938c719e2ef5afea7a292b72c6e9f95c1974e2 Mon Sep 17 00:00:00 2001 From: Philipp Hagemeister Date: Mon, 7 Apr 2014 23:23:48 +0200 Subject: [PATCH] Fix Windows output for non-BMP unicode characters --- youtube_dl/utils.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/youtube_dl/utils.py b/youtube_dl/utils.py index b57fd7a33..9c9320934 100644 --- a/youtube_dl/utils.py +++ b/youtube_dl/utils.py @@ -923,6 +923,9 @@ def _windows_write_string(s, out): 2: -12, } + def ucs2_len(s): + return sum((2 if ord(c) > 0xffff else 1) for c in s) + fileno = out.fileno() if fileno not in WIN_OUTPUT_IDS: return False @@ -956,10 +959,10 @@ def _windows_write_string(s, out): if not_a_console(h): return False - remaining = len(s) + remaining = ucs2_len(s) while remaining > 0: ret = WriteConsoleW( - h, s, min(len(s), 1024), ctypes.byref(written), None) + h, s, min(remaining, 1024), ctypes.byref(written), None) if ret == 0: raise OSError('Failed to write string') remaining -= written.value