Index: optparse.py =================================================================== --- optparse.py (revision 63501) +++ optparse.py (working copy) @@ -1383,7 +1383,7 @@ try: stop = self._process_args(largs, rargs, values) except (BadOptionError, OptionValueError), err: - self.error(str(err)) + self.error(err) args = largs + rargs return self.check_values(values, args) @@ -1554,7 +1554,7 @@ def exit(self, status=0, msg=None): if msg: - sys.stderr.write(msg) + print >>sys.stderr, msg sys.exit(status) def error(self, msg): @@ -1565,7 +1565,7 @@ should either exit or raise an exception. """ self.print_usage(sys.stderr) - self.exit(2, "%s: error: %s\n" % (self.get_prog_name(), msg)) + self.exit(2, _("%s: error: %s\n") % (self.get_prog_name(), msg)) def get_usage(self): if self.usage: @@ -1639,7 +1639,8 @@ def _get_encoding(self, file): encoding = getattr(file, "encoding", None) if not encoding: - encoding = sys.getdefaultencoding() + import locale + encoding = locale.getpreferredencoding() return encoding def print_help(self, file=None):