diff --git a/lib/python/reStructuredText/__init__.py b/lib/python/reStructuredText/__init__.py
index 4cd958fe42d13f54a0c4ba841ed1aecfb1c9d3bb..7948d4e88a8ac045f23091011499da792b99c998 100644
--- a/lib/python/reStructuredText/__init__.py
+++ b/lib/python/reStructuredText/__init__.py
@@ -17,9 +17,14 @@ __all__ = ["HTML" ]
 
 import docutils.core 
 from docutils.io import StringOutput, StringInput 
-import sys
+import sys, os
+
+default_input_encoding = os.environ.get("REST_INPUT_ENCODING", sys.getdefaultencoding())
+default_output_encoding = os.environ.get("REST_OUTPUT_ENCODING", sys.getdefaultencoding())
+
 
 class Warnings:
+
     def __init__(self):
         self.messages = []
 
@@ -28,7 +33,8 @@ class Warnings:
 
 
 def HTML(src, writer='html4zope', report_level=1, stylesheet='default.css',
-         input_encoding=None, output_encoding=None):
+         input_encoding=default_input_encoding, 
+         output_encoding=default_output_encoding):
     """ render HTML from a reStructuredText string 
 
         - 'src'  -- string containing a valid reST document
@@ -44,12 +50,6 @@ def HTML(src, writer='html4zope', report_level=1, stylesheet='default.css',
     pub.set_reader('standalone', None, 'restructuredtext')
     pub.set_writer(writer)
 
-    if input_encoding is None:
-        input_encoding = sys.getdefaultencoding()
-
-    if output_encoding is None:
-        output_encoding = sys.getdefaultencoding()
-
     # go with the defaults
     pub.get_settings()
 
@@ -78,6 +78,5 @@ def HTML(src, writer='html4zope', report_level=1, stylesheet='default.css',
     warnings = ''.join(pub.settings.warning_stream.messages)
 
     # do the format
-    print pub.writer.write(document, pub.destination)
     return pub.writer.write(document, pub.destination)