diff --git a/Lib/pickletools.py b/Lib/pickletools.py
index b4b2840..c050fc5 100644
--- a/Lib/pickletools.py
+++ b/Lib/pickletools.py
@@ -1760,11 +1760,12 @@
                 print("skipping %r: it doesn't look like an opcode name" % name)
             continue
         picklecode = getattr(pickle, name)
-        if not isinstance(picklecode, str) or len(picklecode) != 1:
+        if not isinstance(picklecode, bytes) or len(picklecode) != 1:
             if verbose:
                 print(("skipping %r: value %r doesn't look like a pickle "
                        "code" % (name, picklecode)))
             continue
+        picklecode = picklecode.decode("latin-1")
         if picklecode in copy:
             if verbose:
                 print("checking name %r w/ code %r for consistency" % (
diff --git a/Lib/test/test_exceptions.py b/Lib/test/test_exceptions.py
index aa9b66d..934d50e 100644
--- a/Lib/test/test_exceptions.py
+++ b/Lib/test/test_exceptions.py
@@ -251,12 +251,12 @@
                  'print_file_and_line' : None, 'msg' : 'msgStr',
                  'filename' : None, 'lineno' : None, 'offset' : None}),
             (UnicodeError, (), {'message' : '', 'args' : (),}),
-            (UnicodeEncodeError, ('ascii', 'a', 0, 1, 'ordinal not in range'),
+            (UnicodeEncodeError, (str8('ascii'), 'a', 0, 1, str8('ordinal not in range')),
                 {'message' : '', 'args' : ('ascii', 'a', 0, 1,
                                            'ordinal not in range'),
                  'encoding' : 'ascii', 'object' : 'a',
                  'start' : 0, 'reason' : 'ordinal not in range'}),
-            (UnicodeDecodeError, ('ascii', '\xff', 0, 1, 'ordinal not in range'),
+            (UnicodeDecodeError, (str8('ascii'), b'\xff', 0, 1, str8('ordinal not in range')),
                 {'message' : '', 'args' : ('ascii', '\xff', 0, 1,
                                            'ordinal not in range'),
                  'encoding' : 'ascii', 'object' : '\xff',
@@ -278,6 +278,7 @@
 
         for exc, args, expected in exceptionList:
             try:
+                print("exc=%r, args=%r" % (exc, args))
                 raise exc(*args)
             except BaseException as e:
                 if type(e) is not exc:
@@ -297,7 +298,9 @@
                     if p is None:
                         continue # cPickle not found -- skip it
                     for protocol in range(p.HIGHEST_PROTOCOL + 1):
-                        new = p.loads(p.dumps(e, protocol))
+                        ##print("p=%s, protocol=%s, e=%r" % (p.__name__, protocol, e))
+                        s = p.dumps(e, protocol)
+                        new = p.loads(s)
                         for checkArgName in expected:
                             got = repr(getattr(new, checkArgName))
                             want = repr(expected[checkArgName])
