http://sourceforge.net/tracker/?func=detail&atid=422030&aid=3149845&group_id=38414

--- docutils/frontend.py
+++ docutils/frontend.py
@@ -671,7 +671,7 @@
         raise KeyError('No option with dest == %r.' % dest)
 
 
-class ConfigParser(CP.ConfigParser):
+class ConfigParser(CP.RawConfigParser):
 
     old_settings = {
         'pep_stylesheet': ('pep_html writer', 'stylesheet'),
@@ -693,7 +693,7 @@
 """
 
     def __init__(self, *args, **kwargs):
-        CP.ConfigParser.__init__(self, *args, **kwargs)
+        CP.RawConfigParser.__init__(self, *args, **kwargs)
 
         self._files = []
         """List of paths of configuration files read."""
@@ -708,7 +708,7 @@
             except IOError:
                 continue
             try:
-                CP.ConfigParser.readfp(self, fp, filename)
+                CP.RawConfigParser.readfp(self, fp, filename)
             except UnicodeDecodeError:
                 sys.stderr.write(self.not_utf8_error % (filename, filename))
                 fp.close()
@@ -749,7 +749,7 @@
                 except KeyError:
                     continue
                 if option.validator:
-                    value = self.get(section, setting, raw=1)
+                    value = self.get(section, setting)
                     try:
                         new_value = option.validator(
                             setting, value, option_parser,
@@ -778,7 +778,7 @@
         section_dict = {}
         if self.has_section(section):
             for option in self.options(section):
-                section_dict[option] = self.get(section, option, raw=1)
+                section_dict[option] = self.get(section, option)
         return section_dict
 
 
