Issue #20363. Fixed BytesWarning triggerred by test suite.
Patch by Berker Peksag.
diff --git a/Lib/configparser.py b/Lib/configparser.py
index aa401fc..aebf8a0 100644
--- a/Lib/configparser.py
+++ b/Lib/configparser.py
@@ -286,7 +286,7 @@
             raise ValueError("Required argument `source' not given.")
         elif filename:
             source = filename
-        Error.__init__(self, 'Source contains parsing errors: %s' % source)
+        Error.__init__(self, 'Source contains parsing errors: %r' % source)
         self.source = source
         self.errors = []
         self.args = (source, )
@@ -322,7 +322,7 @@
     def __init__(self, filename, lineno, line):
         Error.__init__(
             self,
-            'File contains no section headers.\nfile: %s, line: %d\n%r' %
+            'File contains no section headers.\nfile: %r, line: %d\n%r' %
             (filename, lineno, line))
         self.source = filename
         self.lineno = lineno
diff --git a/Lib/distutils/command/register.py b/Lib/distutils/command/register.py
index 55656c2..b49f86f 100644
--- a/Lib/distutils/command/register.py
+++ b/Lib/distutils/command/register.py
@@ -300,5 +300,5 @@
             result = 200, 'OK'
         if self.show_response:
             dashes = '-' * 75
-            self.announce('%s%s%s' % (dashes, data, dashes))
+            self.announce('%s%r%s' % (dashes, data, dashes))
         return result
diff --git a/Lib/test/test_hash.py b/Lib/test/test_hash.py
index e3ab6e4..22ebbcc 100644
--- a/Lib/test/test_hash.py
+++ b/Lib/test/test_hash.py
@@ -138,7 +138,7 @@
     # an object to be tested
 
     def get_hash_command(self, repr_):
-        return 'print(hash(%s))' % repr_
+        return 'print(hash(eval(%a)))' % repr_
 
     def get_hash(self, repr_, seed=None):
         env = os.environ.copy()