]> granicus.if.org Git - python/commitdiff
Idlefork patch #682347: convert Unicode strings from readline to
authorMartin v. Löwis <martin@v.loewis.de>
Sun, 22 Jun 2003 07:52:56 +0000 (07:52 +0000)
committerMartin v. Löwis <martin@v.loewis.de>
Sun, 22 Jun 2003 07:52:56 +0000 (07:52 +0000)
IOBinding.encoding. Also set sys.std{in,out,err}.encoding, for both
the local and the subprocess case.

Lib/idlelib/PyShell.py
Lib/idlelib/run.py

index 34780041182b8ca92812c341fda5e4f1fd60cb5b..83f2de8b9af9190c29a5c2ff294460161eee74a7 100644 (file)
@@ -741,9 +741,10 @@ class PyShell(OutputWindow):
         self.save_stdout = sys.stdout
         self.save_stderr = sys.stderr
         self.save_stdin = sys.stdin
-        self.stdout = PseudoFile(self, "stdout")
-        self.stderr = PseudoFile(self, "stderr")
-        self.console = PseudoFile(self, "console")
+        import IOBinding
+        self.stdout = PseudoFile(self, "stdout", IOBinding.encoding)
+        self.stderr = PseudoFile(self, "stderr", IOBinding.encoding)
+        self.console = PseudoFile(self, "console", IOBinding.encoding)
         if not use_subprocess:
             sys.stdout = self.stdout
             sys.stderr = self.stderr
@@ -886,6 +887,12 @@ class PyShell(OutputWindow):
         finally:
             self.reading = save
         line = self.text.get("iomark", "end-1c")
+        if isinstance(line, unicode):
+            import IOBinding
+            try:
+                line = line.encode(IOBinding.encoding)
+            except UnicodeError:
+                pass
         self.resetoutput()
         if self.canceled:
             self.canceled = 0
@@ -1090,10 +1097,11 @@ class PyShell(OutputWindow):
 
 class PseudoFile:
 
-    def __init__(self, shell, tags):
+    def __init__(self, shell, tags, encoding=None):
         self.shell = shell
         self.tags = tags
         self.softspace = 0
+        self.encoding = encoding
 
     def write(self, s):
         self.shell.write(s, self.tags)
index be91d5459d3283d3c6858458e42434fb3872806c..4e6345c8d69c263999d59ae9006d0bc3d2d5995b 100644 (file)
@@ -210,6 +210,9 @@ class MyHandler(rpc.RPCHandler):
         sys.stdin = self.console = self.get_remote_proxy("stdin")
         sys.stdout = self.get_remote_proxy("stdout")
         sys.stderr = self.get_remote_proxy("stderr")
+        import IOBinding
+        sys.stdin.encoding = sys.stdout.encoding = \
+                             sys.stderr.encoding = IOBinding.encoding
         self.interp = self.get_remote_proxy("interp")
         rpc.RPCHandler.getresponse(self, myseq=None, wait=0.05)