Fix Windows output for non-BMP unicode characters
This commit is contained in:
		@@ -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
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user