miniterm: fix encoding problems on win32
diff --git a/serial/tools/miniterm.py b/serial/tools/miniterm.py
index 6807153..513bb2a 100644
--- a/serial/tools/miniterm.py
+++ b/serial/tools/miniterm.py
@@ -74,6 +74,17 @@
 if os.name == 'nt':
     import msvcrt
     import ctypes
+
+    class Out(object):
+        def __init__(self, fd):
+            self.fd = fd
+
+        def flush(self):
+            pass
+
+        def write(self, s):
+            os.write(self.fd, s)
+
     class Console(ConsoleBase):
         def __init__(self):
             super(Console, self).__init__()
@@ -81,18 +92,10 @@
             self._saved_icp = ctypes.windll.kernel32.GetConsoleCP()
             ctypes.windll.kernel32.SetConsoleOutputCP(65001)
             ctypes.windll.kernel32.SetConsoleCP(65001)
-            if sys.version_info < (3, 0):
-                class Out:
-                    def __init__(self):
-                        self.fd = sys.stdout.fileno()
-                    def flush(self):
-                        pass
-                    def write(self, s):
-                        os.write(self.fd, s)
-                self.output = codecs.getwriter('UTF-8')(Out(), 'replace')
-                self.byte_output = Out()
-            else:
-                self.output = codecs.getwriter('UTF-8')(sys.stdout.buffer, 'replace')
+            self.output = codecs.getwriter('UTF-8')(Out(sys.stdout.fileno()), 'replace')
+            # the change of the code page is not propagated to Python, manually fix it
+            sys.stderr = codecs.getwriter('UTF-8')(Out(sys.stderr.fileno()), 'replace')
+            sys.stdout = self.output
 
         def __del__(self):
             ctypes.windll.kernel32.SetConsoleOutputCP(self._saved_ocp)
@@ -111,6 +114,7 @@
 elif os.name == 'posix':
     import atexit
     import termios
+
     class Console(ConsoleBase):
         def __init__(self):
             super(Console, self).__init__()