Backport commit 33543b4e0e5d from Python 3.2: #10801: In zipfile, support
different encodings for the header and the filenames.  Patch by MvL, test by
Eli Bendersky.
diff --git a/Lib/zipfile.py b/Lib/zipfile.py
index 2ec6306..a382383 100644
--- a/Lib/zipfile.py
+++ b/Lib/zipfile.py
@@ -928,7 +928,13 @@
         if fheader[_FH_EXTRA_FIELD_LENGTH]:
             zef_file.read(fheader[_FH_EXTRA_FIELD_LENGTH])
 
-        if fname != zinfo.orig_filename.encode("utf-8"):
+        if zinfo.flag_bits & 0x800:
+            # UTF-8 filename
+            fname_str = fname.decode("utf-8")
+        else:
+            fname_str = fname.decode("cp437")
+
+        if fname_str != zinfo.orig_filename:
             raise BadZipfile(
                   'File name in directory %r and header %r differ.'
                   % (zinfo.orig_filename, fname))