--- /usr/lib/python2.5/doctest.py 2009-02-17 22:42:48.000000000 +0100 +++ doctest.py 2009-07-01 22:18:48.000000000 +0200 @@ -98,6 +98,7 @@ import sys, traceback, inspect, linecache, os, re import unittest, difflib, pdb, tempfile import warnings +import locale from StringIO import StringIO # There are 4 basic classes: @@ -1339,7 +1340,11 @@ save_stdout = sys.stdout if out is None: - out = save_stdout.write + output_encoding = (hasattr(sys.stdout, 'encoding') \ + and sys.stdout.encoding) or locale.getpreferredencoding() \ + or 'ascii' + + out = lambda x: save_stdout.write(x.encode(output_encoding)) sys.stdout = self._fakeout # Patch pdb.set_trace to restore sys.stdout during interactive @@ -2119,8 +2124,13 @@ try: runner.DIVIDER = "-"*70 + output_encoding = (hasattr(sys.stdout, 'encoding') \ + and sys.stdout.encoding) or locale.getpreferredencoding() \ + or 'ascii' + failures, tries = runner.run( - test, out=new.write, clear_globs=False) + test, out=lambda x: new.write(x.encode(output_encoding)), + clear_globs=False) finally: sys.stdout = old