And because python2.3 lacks sys.setappdefaultencoding, so have to reload(sys), and use sys.setdefaultencoding.<br><br>The patch for svn-2875:<br><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">
Index: IPython/iplib.py</span><br style="font-family: courier new,monospace;"><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">===================================================================
</span><br style="font-family: courier new,monospace;"><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">--- IPython/iplib.py&nbsp;&nbsp;&nbsp; ޶ 2876</span><br style="font-family: courier new,monospace;">
<br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">+++ IPython/iplib.py&nbsp;&nbsp;&nbsp; </span><br style="font-family: courier new,monospace;"><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">@@ -79,6 +79,14 @@</span><br style="font-family: courier new,monospace;"><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">
&nbsp;import IPython.shadowns</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp;# Globals</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">
&nbsp;</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">+# make converting between str and unicode easy</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">
+try:</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">+&nbsp;&nbsp;&nbsp; sys.setappdefaultencoding(sys.stdin.encoding or &#39;ascii&#39;)</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">+except:</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">+&nbsp;&nbsp;&nbsp; # python2.3 does not have sys.setappdefaultencoding</span>
<br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">+&nbsp;&nbsp;&nbsp; reload(sys)</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">+&nbsp;&nbsp;&nbsp; 
sys.setdefaultencoding(sys.stdin.encoding or &#39;ascii&#39;)</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">+</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&nbsp;# store the builtin raw_input globally, and use this always, in case user code</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">
&nbsp;# overwrites it (like wx.py.PyShell does)</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp;raw_input_original = raw_input</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">@@ -1911,7 +1919,7 @@</span><br style="font-family: courier new,monospace;"><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # this allows execution of indented pasted code. It is tempting</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # to add &#39;\n&#39; at the end of source to run commands like &#39; a=1&#39;
</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # directly, but this fails for more complicated scenarios</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; source=source.encode(self.stdin_encoding)</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; source = str(source)
</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if source[:1] in [&#39; &#39;, &#39;\t&#39;]:</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; source = &#39;if 1:\n%s&#39; % source</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp;</span><br style="font-family: courier new,monospace;"><br style="font-family: courier new,monospace;">
<br>