diff --git a/Lib/codecs.py b/Lib/codecs.py
index fca0f8e..9931137 100644
--- a/Lib/codecs.py
+++ b/Lib/codecs.py
@@ -539,6 +539,21 @@
     sr.file_encoding = file_encoding
     return sr
 
+### Helpers for charmap-based codecs
+
+def make_identity_dict(rng):
+
+    """ make_identity_dict(rng) -> dict
+
+        Return a dictionary where elements of the rng sequence are
+        mapped to themselves.
+        
+    """
+    res = {}
+    for i in rng:
+        res[i]=i
+    return res
+
 ### Tests
 
 if __name__ == '__main__':
diff --git a/Lib/encodings/cp037.py b/Lib/encodings/cp037.py
index d60504c..5868372 100644
--- a/Lib/encodings/cp037.py
+++ b/Lib/encodings/cp037.py
@@ -1,9 +1,9 @@
-""" Python Character Mapping Codec generated from 'CP037.TXT'.
-
+""" Python Character Mapping Codec generated from 'CP037.TXT' with gencodec.py.
 
 Written by Marc-Andre Lemburg (mal@lemburg.com).
 
 (c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+(c) Copyright 2000 Guido van Rossum.
 
 """#"
 
@@ -35,8 +35,8 @@
 
 ### Decoding Map
 
-decoding_map = {
-
+decoding_map = codecs.make_identity_dict(range(256))
+decoding_map.update({
 	0x0004: 0x009c,	# CONTROL
 	0x0005: 0x0009,	# HORIZONTAL TABULATION
 	0x0006: 0x0086,	# CONTROL
@@ -273,7 +273,7 @@
 	0x00fd: 0x00d9,	# LATIN CAPITAL LETTER U WITH GRAVE
 	0x00fe: 0x00da,	# LATIN CAPITAL LETTER U WITH ACUTE
 	0x00ff: 0x009f,	# CONTROL
-}
+})
 
 ### Encoding Map
 
diff --git a/Lib/encodings/cp1006.py b/Lib/encodings/cp1006.py
index 991feed..593fbb6 100644
--- a/Lib/encodings/cp1006.py
+++ b/Lib/encodings/cp1006.py
@@ -1,9 +1,9 @@
-""" Python Character Mapping Codec generated from 'CP1006.TXT'.
-
+""" Python Character Mapping Codec generated from 'CP1006.TXT' with gencodec.py.
 
 Written by Marc-Andre Lemburg (mal@lemburg.com).
 
 (c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+(c) Copyright 2000 Guido van Rossum.
 
 """#"
 
@@ -35,8 +35,8 @@
 
 ### Decoding Map
 
-decoding_map = {
-
+decoding_map = codecs.make_identity_dict(range(256))
+decoding_map.update({
 	0x00a1: 0x06f0,	# 	EXTENDED ARABIC-INDIC DIGIT ZERO
 	0x00a2: 0x06f1,	# 	EXTENDED ARABIC-INDIC DIGIT ONE
 	0x00a3: 0x06f2,	# 	EXTENDED ARABIC-INDIC DIGIT TWO
@@ -131,7 +131,7 @@
 	0x00fd: 0xfbae,	# 	ARABIC LETTER YEH BARREE ISOLATED FORM
 	0x00fe: 0xfe7c,	# 	ARABIC SHADDA ISOLATED FORM
 	0x00ff: 0xfe7d,	# 	ARABIC SHADDA MEDIAL FORM
-}
+})
 
 ### Encoding Map
 
diff --git a/Lib/encodings/cp1026.py b/Lib/encodings/cp1026.py
index ae8086f..3796a75 100644
--- a/Lib/encodings/cp1026.py
+++ b/Lib/encodings/cp1026.py
@@ -1,9 +1,9 @@
-""" Python Character Mapping Codec generated from 'CP1026.TXT'.
-
+""" Python Character Mapping Codec generated from 'CP1026.TXT' with gencodec.py.
 
 Written by Marc-Andre Lemburg (mal@lemburg.com).
 
 (c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+(c) Copyright 2000 Guido van Rossum.
 
 """#"
 
@@ -35,8 +35,8 @@
 
 ### Decoding Map
 
-decoding_map = {
-
+decoding_map = codecs.make_identity_dict(range(256))
+decoding_map.update({
 	0x0004: 0x009c,	# CONTROL
 	0x0005: 0x0009,	# HORIZONTAL TABULATION
 	0x0006: 0x0086,	# CONTROL
@@ -273,7 +273,7 @@
 	0x00fd: 0x00d9,	# LATIN CAPITAL LETTER U WITH GRAVE
 	0x00fe: 0x00da,	# LATIN CAPITAL LETTER U WITH ACUTE
 	0x00ff: 0x009f,	# CONTROL
-}
+})
 
 ### Encoding Map
 
diff --git a/Lib/encodings/cp1250.py b/Lib/encodings/cp1250.py
index d1276c4..03a3e31 100644
--- a/Lib/encodings/cp1250.py
+++ b/Lib/encodings/cp1250.py
@@ -1,9 +1,9 @@
-""" Python Character Mapping Codec generated from 'CP1250.TXT'.
-
+""" Python Character Mapping Codec generated from 'CP1250.TXT' with gencodec.py.
 
 Written by Marc-Andre Lemburg (mal@lemburg.com).
 
 (c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+(c) Copyright 2000 Guido van Rossum.
 
 """#"
 
@@ -35,8 +35,8 @@
 
 ### Decoding Map
 
-decoding_map = {
-
+decoding_map = codecs.make_identity_dict(range(256))
+decoding_map.update({
 	0x0080: 0x20ac,	# EURO SIGN
 	0x0081: None,	# UNDEFINED
 	0x0082: 0x201a,	# SINGLE LOW-9 QUOTATION MARK
@@ -116,7 +116,7 @@
 	0x00fb: 0x0171,	# LATIN SMALL LETTER U WITH DOUBLE ACUTE
 	0x00fe: 0x0163,	# LATIN SMALL LETTER T WITH CEDILLA
 	0x00ff: 0x02d9,	# DOT ABOVE
-}
+})
 
 ### Encoding Map
 
diff --git a/Lib/encodings/cp1251.py b/Lib/encodings/cp1251.py
index 42921e4..e27a122 100644
--- a/Lib/encodings/cp1251.py
+++ b/Lib/encodings/cp1251.py
@@ -1,9 +1,9 @@
-""" Python Character Mapping Codec generated from 'CP1251.TXT'.
-
+""" Python Character Mapping Codec generated from 'CP1251.TXT' with gencodec.py.
 
 Written by Marc-Andre Lemburg (mal@lemburg.com).
 
 (c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+(c) Copyright 2000 Guido van Rossum.
 
 """#"
 
@@ -35,8 +35,8 @@
 
 ### Decoding Map
 
-decoding_map = {
-
+decoding_map = codecs.make_identity_dict(range(256))
+decoding_map.update({
 	0x0080: 0x0402,	# CYRILLIC CAPITAL LETTER DJE
 	0x0081: 0x0403,	# CYRILLIC CAPITAL LETTER GJE
 	0x0082: 0x201a,	# SINGLE LOW-9 QUOTATION MARK
@@ -150,7 +150,7 @@
 	0x00fd: 0x044d,	# CYRILLIC SMALL LETTER E
 	0x00fe: 0x044e,	# CYRILLIC SMALL LETTER YU
 	0x00ff: 0x044f,	# CYRILLIC SMALL LETTER YA
-}
+})
 
 ### Encoding Map
 
diff --git a/Lib/encodings/cp1252.py b/Lib/encodings/cp1252.py
index 07a5358..5d7bdd6 100644
--- a/Lib/encodings/cp1252.py
+++ b/Lib/encodings/cp1252.py
@@ -1,9 +1,9 @@
-""" Python Character Mapping Codec generated from 'CP1252.TXT'.
-
+""" Python Character Mapping Codec generated from 'CP1252.TXT' with gencodec.py.
 
 Written by Marc-Andre Lemburg (mal@lemburg.com).
 
 (c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+(c) Copyright 2000 Guido van Rossum.
 
 """#"
 
@@ -35,8 +35,8 @@
 
 ### Decoding Map
 
-decoding_map = {
-
+decoding_map = codecs.make_identity_dict(range(256))
+decoding_map.update({
 	0x0080: 0x20ac,	# EURO SIGN
 	0x0081: None,	# UNDEFINED
 	0x0082: 0x201a,	# SINGLE LOW-9 QUOTATION MARK
@@ -69,7 +69,7 @@
 	0x009d: None,	# UNDEFINED
 	0x009e: 0x017e,	# LATIN SMALL LETTER Z WITH CARON
 	0x009f: 0x0178,	# LATIN CAPITAL LETTER Y WITH DIAERESIS
-}
+})
 
 ### Encoding Map
 
diff --git a/Lib/encodings/cp1253.py b/Lib/encodings/cp1253.py
index c84808a..abc144c 100644
--- a/Lib/encodings/cp1253.py
+++ b/Lib/encodings/cp1253.py
@@ -1,9 +1,9 @@
-""" Python Character Mapping Codec generated from 'CP1253.TXT'.
-
+""" Python Character Mapping Codec generated from 'CP1253.TXT' with gencodec.py.
 
 Written by Marc-Andre Lemburg (mal@lemburg.com).
 
 (c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+(c) Copyright 2000 Guido van Rossum.
 
 """#"
 
@@ -35,8 +35,8 @@
 
 ### Decoding Map
 
-decoding_map = {
-
+decoding_map = codecs.make_identity_dict(range(256))
+decoding_map.update({
 	0x0080: 0x20ac,	# EURO SIGN
 	0x0081: None,	# UNDEFINED
 	0x0082: 0x201a,	# SINGLE LOW-9 QUOTATION MARK
@@ -144,7 +144,7 @@
 	0x00fd: 0x03cd,	# GREEK SMALL LETTER UPSILON WITH TONOS
 	0x00fe: 0x03ce,	# GREEK SMALL LETTER OMEGA WITH TONOS
 	0x00ff: None,	# UNDEFINED
-}
+})
 
 ### Encoding Map
 
diff --git a/Lib/encodings/cp1254.py b/Lib/encodings/cp1254.py
index 9897ecf..4a2ab3c 100644
--- a/Lib/encodings/cp1254.py
+++ b/Lib/encodings/cp1254.py
@@ -1,9 +1,9 @@
-""" Python Character Mapping Codec generated from 'CP1254.TXT'.
-
+""" Python Character Mapping Codec generated from 'CP1254.TXT' with gencodec.py.
 
 Written by Marc-Andre Lemburg (mal@lemburg.com).
 
 (c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+(c) Copyright 2000 Guido van Rossum.
 
 """#"
 
@@ -35,8 +35,8 @@
 
 ### Decoding Map
 
-decoding_map = {
-
+decoding_map = codecs.make_identity_dict(range(256))
+decoding_map.update({
 	0x0080: 0x20ac,	# EURO SIGN
 	0x0081: None,	# UNDEFINED
 	0x0082: 0x201a,	# SINGLE LOW-9 QUOTATION MARK
@@ -75,7 +75,7 @@
 	0x00f0: 0x011f,	# LATIN SMALL LETTER G WITH BREVE
 	0x00fd: 0x0131,	# LATIN SMALL LETTER DOTLESS I
 	0x00fe: 0x015f,	# LATIN SMALL LETTER S WITH CEDILLA
-}
+})
 
 ### Encoding Map
 
diff --git a/Lib/encodings/cp1255.py b/Lib/encodings/cp1255.py
index 5404b46..c987b85 100644
--- a/Lib/encodings/cp1255.py
+++ b/Lib/encodings/cp1255.py
@@ -1,9 +1,9 @@
-""" Python Character Mapping Codec generated from 'CP1255.TXT'.
-
+""" Python Character Mapping Codec generated from 'CP1255.TXT' with gencodec.py.
 
 Written by Marc-Andre Lemburg (mal@lemburg.com).
 
 (c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+(c) Copyright 2000 Guido van Rossum.
 
 """#"
 
@@ -35,8 +35,8 @@
 
 ### Decoding Map
 
-decoding_map = {
-
+decoding_map = codecs.make_identity_dict(range(256))
+decoding_map.update({
 	0x0080: 0x20ac,	# EURO SIGN
 	0x0081: None,	# UNDEFINED
 	0x0082: 0x201a,	# SINGLE LOW-9 QUOTATION MARK
@@ -136,7 +136,7 @@
 	0x00fd: 0x200e,	# LEFT-TO-RIGHT MARK
 	0x00fe: 0x200f,	# RIGHT-TO-LEFT MARK
 	0x00ff: None,	# UNDEFINED
-}
+})
 
 ### Encoding Map
 
diff --git a/Lib/encodings/cp1256.py b/Lib/encodings/cp1256.py
index 6bb02dd..d72c5bc 100644
--- a/Lib/encodings/cp1256.py
+++ b/Lib/encodings/cp1256.py
@@ -1,9 +1,9 @@
-""" Python Character Mapping Codec generated from 'CP1256.TXT'.
-
+""" Python Character Mapping Codec generated from 'CP1256.TXT' with gencodec.py.
 
 Written by Marc-Andre Lemburg (mal@lemburg.com).
 
 (c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+(c) Copyright 2000 Guido van Rossum.
 
 """#"
 
@@ -35,8 +35,8 @@
 
 ### Decoding Map
 
-decoding_map = {
-
+decoding_map = codecs.make_identity_dict(range(256))
+decoding_map.update({
 	0x0080: 0x20ac,	# EURO SIGN
 	0x0081: 0x067e,	# ARABIC LETTER PEH
 	0x0082: 0x201a,	# SINGLE LOW-9 QUOTATION MARK
@@ -122,7 +122,7 @@
 	0x00fd: 0x200e,	# LEFT-TO-RIGHT MARK
 	0x00fe: 0x200f,	# RIGHT-TO-LEFT MARK
 	0x00ff: 0x06d2,	# ARABIC LETTER YEH BARREE
-}
+})
 
 ### Encoding Map
 
diff --git a/Lib/encodings/cp1257.py b/Lib/encodings/cp1257.py
index ded826c..d17a904 100644
--- a/Lib/encodings/cp1257.py
+++ b/Lib/encodings/cp1257.py
@@ -1,9 +1,9 @@
-""" Python Character Mapping Codec generated from 'CP1257.TXT'.
-
+""" Python Character Mapping Codec generated from 'CP1257.TXT' with gencodec.py.
 
 Written by Marc-Andre Lemburg (mal@lemburg.com).
 
 (c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+(c) Copyright 2000 Guido van Rossum.
 
 """#"
 
@@ -35,8 +35,8 @@
 
 ### Decoding Map
 
-decoding_map = {
-
+decoding_map = codecs.make_identity_dict(range(256))
+decoding_map.update({
 	0x0080: 0x20ac,	# EURO SIGN
 	0x0081: None,	# UNDEFINED
 	0x0082: 0x201a,	# SINGLE LOW-9 QUOTATION MARK
@@ -124,7 +124,7 @@
 	0x00fd: 0x017c,	# LATIN SMALL LETTER Z WITH DOT ABOVE
 	0x00fe: 0x017e,	# LATIN SMALL LETTER Z WITH CARON
 	0x00ff: 0x02d9,	# DOT ABOVE
-}
+})
 
 ### Encoding Map
 
diff --git a/Lib/encodings/cp1258.py b/Lib/encodings/cp1258.py
index 955253c..597f124 100644
--- a/Lib/encodings/cp1258.py
+++ b/Lib/encodings/cp1258.py
@@ -1,9 +1,9 @@
-""" Python Character Mapping Codec generated from 'CP1258.TXT'.
-
+""" Python Character Mapping Codec generated from 'CP1258.TXT' with gencodec.py.
 
 Written by Marc-Andre Lemburg (mal@lemburg.com).
 
 (c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+(c) Copyright 2000 Guido van Rossum.
 
 """#"
 
@@ -35,8 +35,8 @@
 
 ### Decoding Map
 
-decoding_map = {
-
+decoding_map = codecs.make_identity_dict(range(256))
+decoding_map.update({
 	0x0080: 0x20ac,	# EURO SIGN
 	0x0081: None,	# UNDEFINED
 	0x0082: 0x201a,	# SINGLE LOW-9 QUOTATION MARK
@@ -83,7 +83,7 @@
 	0x00f5: 0x01a1,	# LATIN SMALL LETTER O WITH HORN
 	0x00fd: 0x01b0,	# LATIN SMALL LETTER U WITH HORN
 	0x00fe: 0x20ab,	# DONG SIGN
-}
+})
 
 ### Encoding Map
 
diff --git a/Lib/encodings/cp424.py b/Lib/encodings/cp424.py
index c4abaec..bc10379 100644
--- a/Lib/encodings/cp424.py
+++ b/Lib/encodings/cp424.py
@@ -1,9 +1,9 @@
-""" Python Character Mapping Codec generated from 'CP424.TXT'.
-
+""" Python Character Mapping Codec generated from 'CP424.TXT' with gencodec.py.
 
 Written by Marc-Andre Lemburg (mal@lemburg.com).
 
 (c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+(c) Copyright 2000 Guido van Rossum.
 
 """#"
 
@@ -35,8 +35,8 @@
 
 ### Decoding Map
 
-decoding_map = {
-
+decoding_map = codecs.make_identity_dict(range(256))
+decoding_map.update({
 	0x0004: 0x009c,	# SELECT
 	0x0005: 0x0009,	# HORIZONTAL TABULATION
 	0x0006: 0x0086,	# REQUIRED NEW LINE
@@ -273,7 +273,7 @@
 	0x00fd: None,	# UNDEFINED
 	0x00fe: None,	# UNDEFINED
 	0x00ff: 0x009f,	# EIGHT ONES
-}
+})
 
 ### Encoding Map
 
diff --git a/Lib/encodings/cp437.py b/Lib/encodings/cp437.py
index ca7d90e..db1b88a 100644
--- a/Lib/encodings/cp437.py
+++ b/Lib/encodings/cp437.py
@@ -1,9 +1,9 @@
-""" Python Character Mapping Codec generated from 'CP437.TXT'.
-
+""" Python Character Mapping Codec generated from 'CP437.TXT' with gencodec.py.
 
 Written by Marc-Andre Lemburg (mal@lemburg.com).
 
 (c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+(c) Copyright 2000 Guido van Rossum.
 
 """#"
 
@@ -35,8 +35,8 @@
 
 ### Decoding Map
 
-decoding_map = {
-
+decoding_map = codecs.make_identity_dict(range(256))
+decoding_map.update({
 	0x0080: 0x00c7,	# LATIN CAPITAL LETTER C WITH CEDILLA
 	0x0081: 0x00fc,	# LATIN SMALL LETTER U WITH DIAERESIS
 	0x0082: 0x00e9,	# LATIN SMALL LETTER E WITH ACUTE
@@ -165,7 +165,7 @@
 	0x00fd: 0x00b2,	# SUPERSCRIPT TWO
 	0x00fe: 0x25a0,	# BLACK SQUARE
 	0x00ff: 0x00a0,	# NO-BREAK SPACE
-}
+})
 
 ### Encoding Map
 
diff --git a/Lib/encodings/cp500.py b/Lib/encodings/cp500.py
index 33d6fed..1c8fb57 100644
--- a/Lib/encodings/cp500.py
+++ b/Lib/encodings/cp500.py
@@ -1,9 +1,9 @@
-""" Python Character Mapping Codec generated from 'CP500.TXT'.
-
+""" Python Character Mapping Codec generated from 'CP500.TXT' with gencodec.py.
 
 Written by Marc-Andre Lemburg (mal@lemburg.com).
 
 (c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+(c) Copyright 2000 Guido van Rossum.
 
 """#"
 
@@ -35,8 +35,8 @@
 
 ### Decoding Map
 
-decoding_map = {
-
+decoding_map = codecs.make_identity_dict(range(256))
+decoding_map.update({
 	0x0004: 0x009c,	# CONTROL
 	0x0005: 0x0009,	# HORIZONTAL TABULATION
 	0x0006: 0x0086,	# CONTROL
@@ -273,7 +273,7 @@
 	0x00fd: 0x00d9,	# LATIN CAPITAL LETTER U WITH GRAVE
 	0x00fe: 0x00da,	# LATIN CAPITAL LETTER U WITH ACUTE
 	0x00ff: 0x009f,	# CONTROL
-}
+})
 
 ### Encoding Map
 
diff --git a/Lib/encodings/cp737.py b/Lib/encodings/cp737.py
index e55b3dd..03665ae 100644
--- a/Lib/encodings/cp737.py
+++ b/Lib/encodings/cp737.py
@@ -1,9 +1,9 @@
-""" Python Character Mapping Codec generated from 'CP737.TXT'.
-
+""" Python Character Mapping Codec generated from 'CP737.TXT' with gencodec.py.
 
 Written by Marc-Andre Lemburg (mal@lemburg.com).
 
 (c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+(c) Copyright 2000 Guido van Rossum.
 
 """#"
 
@@ -35,8 +35,8 @@
 
 ### Decoding Map
 
-decoding_map = {
-
+decoding_map = codecs.make_identity_dict(range(256))
+decoding_map.update({
 	0x0080: 0x0391,	# GREEK CAPITAL LETTER ALPHA
 	0x0081: 0x0392,	# GREEK CAPITAL LETTER BETA
 	0x0082: 0x0393,	# GREEK CAPITAL LETTER GAMMA
@@ -165,7 +165,7 @@
 	0x00fd: 0x00b2,	# SUPERSCRIPT TWO
 	0x00fe: 0x25a0,	# BLACK SQUARE
 	0x00ff: 0x00a0,	# NO-BREAK SPACE
-}
+})
 
 ### Encoding Map
 
diff --git a/Lib/encodings/cp775.py b/Lib/encodings/cp775.py
index e43ce2d..b38ccb5 100644
--- a/Lib/encodings/cp775.py
+++ b/Lib/encodings/cp775.py
@@ -1,9 +1,9 @@
-""" Python Character Mapping Codec generated from 'CP775.TXT'.
-
+""" Python Character Mapping Codec generated from 'CP775.TXT' with gencodec.py.
 
 Written by Marc-Andre Lemburg (mal@lemburg.com).
 
 (c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+(c) Copyright 2000 Guido van Rossum.
 
 """#"
 
@@ -35,8 +35,8 @@
 
 ### Decoding Map
 
-decoding_map = {
-
+decoding_map = codecs.make_identity_dict(range(256))
+decoding_map.update({
 	0x0080: 0x0106,	# LATIN CAPITAL LETTER C WITH ACUTE
 	0x0081: 0x00fc,	# LATIN SMALL LETTER U WITH DIAERESIS
 	0x0082: 0x00e9,	# LATIN SMALL LETTER E WITH ACUTE
@@ -165,7 +165,7 @@
 	0x00fd: 0x00b2,	# SUPERSCRIPT TWO
 	0x00fe: 0x25a0,	# BLACK SQUARE
 	0x00ff: 0x00a0,	# NO-BREAK SPACE
-}
+})
 
 ### Encoding Map
 
diff --git a/Lib/encodings/cp850.py b/Lib/encodings/cp850.py
index cb0918c..e26287b 100644
--- a/Lib/encodings/cp850.py
+++ b/Lib/encodings/cp850.py
@@ -1,9 +1,9 @@
-""" Python Character Mapping Codec generated from 'CP850.TXT'.
-
+""" Python Character Mapping Codec generated from 'CP850.TXT' with gencodec.py.
 
 Written by Marc-Andre Lemburg (mal@lemburg.com).
 
 (c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+(c) Copyright 2000 Guido van Rossum.
 
 """#"
 
@@ -35,8 +35,8 @@
 
 ### Decoding Map
 
-decoding_map = {
-
+decoding_map = codecs.make_identity_dict(range(256))
+decoding_map.update({
 	0x0080: 0x00c7,	# LATIN CAPITAL LETTER C WITH CEDILLA
 	0x0081: 0x00fc,	# LATIN SMALL LETTER U WITH DIAERESIS
 	0x0082: 0x00e9,	# LATIN SMALL LETTER E WITH ACUTE
@@ -165,7 +165,7 @@
 	0x00fd: 0x00b2,	# SUPERSCRIPT TWO
 	0x00fe: 0x25a0,	# BLACK SQUARE
 	0x00ff: 0x00a0,	# NO-BREAK SPACE
-}
+})
 
 ### Encoding Map
 
diff --git a/Lib/encodings/cp852.py b/Lib/encodings/cp852.py
index ba4f142..431d844 100644
--- a/Lib/encodings/cp852.py
+++ b/Lib/encodings/cp852.py
@@ -1,9 +1,9 @@
-""" Python Character Mapping Codec generated from 'CP852.TXT'.
-
+""" Python Character Mapping Codec generated from 'CP852.TXT' with gencodec.py.
 
 Written by Marc-Andre Lemburg (mal@lemburg.com).
 
 (c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+(c) Copyright 2000 Guido van Rossum.
 
 """#"
 
@@ -35,8 +35,8 @@
 
 ### Decoding Map
 
-decoding_map = {
-
+decoding_map = codecs.make_identity_dict(range(256))
+decoding_map.update({
 	0x0080: 0x00c7,	# LATIN CAPITAL LETTER C WITH CEDILLA
 	0x0081: 0x00fc,	# LATIN SMALL LETTER U WITH DIAERESIS
 	0x0082: 0x00e9,	# LATIN SMALL LETTER E WITH ACUTE
@@ -165,7 +165,7 @@
 	0x00fd: 0x0159,	# LATIN SMALL LETTER R WITH CARON
 	0x00fe: 0x25a0,	# BLACK SQUARE
 	0x00ff: 0x00a0,	# NO-BREAK SPACE
-}
+})
 
 ### Encoding Map
 
diff --git a/Lib/encodings/cp855.py b/Lib/encodings/cp855.py
index c967bcf..c9e7168 100644
--- a/Lib/encodings/cp855.py
+++ b/Lib/encodings/cp855.py
@@ -1,9 +1,9 @@
-""" Python Character Mapping Codec generated from 'CP855.TXT'.
-
+""" Python Character Mapping Codec generated from 'CP855.TXT' with gencodec.py.
 
 Written by Marc-Andre Lemburg (mal@lemburg.com).
 
 (c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+(c) Copyright 2000 Guido van Rossum.
 
 """#"
 
@@ -35,8 +35,8 @@
 
 ### Decoding Map
 
-decoding_map = {
-
+decoding_map = codecs.make_identity_dict(range(256))
+decoding_map.update({
 	0x0080: 0x0452,	# CYRILLIC SMALL LETTER DJE
 	0x0081: 0x0402,	# CYRILLIC CAPITAL LETTER DJE
 	0x0082: 0x0453,	# CYRILLIC SMALL LETTER GJE
@@ -165,7 +165,7 @@
 	0x00fd: 0x00a7,	# SECTION SIGN
 	0x00fe: 0x25a0,	# BLACK SQUARE
 	0x00ff: 0x00a0,	# NO-BREAK SPACE
-}
+})
 
 ### Encoding Map
 
diff --git a/Lib/encodings/cp856.py b/Lib/encodings/cp856.py
index f384acb..cc2e01f 100644
--- a/Lib/encodings/cp856.py
+++ b/Lib/encodings/cp856.py
@@ -1,9 +1,9 @@
-""" Python Character Mapping Codec generated from 'CP856.TXT'.
-
+""" Python Character Mapping Codec generated from 'CP856.TXT' with gencodec.py.
 
 Written by Marc-Andre Lemburg (mal@lemburg.com).
 
 (c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+(c) Copyright 2000 Guido van Rossum.
 
 """#"
 
@@ -35,8 +35,8 @@
 
 ### Decoding Map
 
-decoding_map = {
-
+decoding_map = codecs.make_identity_dict(range(256))
+decoding_map.update({
 	0x0080: 0x05d0,	# HEBREW LETTER ALEF
 	0x0081: 0x05d1,	# HEBREW LETTER BET
 	0x0082: 0x05d2,	# HEBREW LETTER GIMEL
@@ -120,10 +120,10 @@
 	0x00d0: None,	# UNDEFINED
 	0x00d1: None,	# UNDEFINED
 	0x00d2: None,	# UNDEFINED
-	0x00d3: None,	# UNDEFINED
+	0x00d3: None,	# UNDEFINEDS
 	0x00d4: None,	# UNDEFINED
 	0x00d5: None,	# UNDEFINED
-	0x00d6: None,	# UNDEFINED
+	0x00d6: None,	# UNDEFINEDE
 	0x00d7: None,	# UNDEFINED
 	0x00d8: None,	# UNDEFINED
 	0x00d9: 0x2518,	# BOX DRAWINGS LIGHT UP AND LEFT
@@ -165,7 +165,7 @@
 	0x00fd: 0x00b2,	# SUPERSCRIPT TWO
 	0x00fe: 0x25a0,	# BLACK SQUARE
 	0x00ff: 0x00a0,	# NO-BREAK SPACE
-}
+})
 
 ### Encoding Map
 
diff --git a/Lib/encodings/cp857.py b/Lib/encodings/cp857.py
index 49cc685..6f4df23 100644
--- a/Lib/encodings/cp857.py
+++ b/Lib/encodings/cp857.py
@@ -1,9 +1,9 @@
-""" Python Character Mapping Codec generated from 'CP857.TXT'.
-
+""" Python Character Mapping Codec generated from 'CP857.TXT' with gencodec.py.
 
 Written by Marc-Andre Lemburg (mal@lemburg.com).
 
 (c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+(c) Copyright 2000 Guido van Rossum.
 
 """#"
 
@@ -35,8 +35,8 @@
 
 ### Decoding Map
 
-decoding_map = {
-
+decoding_map = codecs.make_identity_dict(range(256))
+decoding_map.update({
 	0x0080: 0x00c7,	# LATIN CAPITAL LETTER C WITH CEDILLA
 	0x0081: 0x00fc,	# LATIN SMALL LETTER U WITH DIAERESIS
 	0x0082: 0x00e9,	# LATIN SMALL LETTER E WITH ACUTE
@@ -164,7 +164,7 @@
 	0x00fd: 0x00b2,	# SUPERSCRIPT TWO
 	0x00fe: 0x25a0,	# BLACK SQUARE
 	0x00ff: 0x00a0,	# NO-BREAK SPACE
-}
+})
 
 ### Encoding Map
 
diff --git a/Lib/encodings/cp860.py b/Lib/encodings/cp860.py
index 3b9a15d..057d918 100644
--- a/Lib/encodings/cp860.py
+++ b/Lib/encodings/cp860.py
@@ -1,9 +1,9 @@
-""" Python Character Mapping Codec generated from 'CP860.TXT'.
-
+""" Python Character Mapping Codec generated from 'CP860.TXT' with gencodec.py.
 
 Written by Marc-Andre Lemburg (mal@lemburg.com).
 
 (c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+(c) Copyright 2000 Guido van Rossum.
 
 """#"
 
@@ -35,8 +35,8 @@
 
 ### Decoding Map
 
-decoding_map = {
-
+decoding_map = codecs.make_identity_dict(range(256))
+decoding_map.update({
 	0x0080: 0x00c7,	# LATIN CAPITAL LETTER C WITH CEDILLA
 	0x0081: 0x00fc,	# LATIN SMALL LETTER U WITH DIAERESIS
 	0x0082: 0x00e9,	# LATIN SMALL LETTER E WITH ACUTE
@@ -165,7 +165,7 @@
 	0x00fd: 0x00b2,	# SUPERSCRIPT TWO
 	0x00fe: 0x25a0,	# BLACK SQUARE
 	0x00ff: 0x00a0,	# NO-BREAK SPACE
-}
+})
 
 ### Encoding Map
 
diff --git a/Lib/encodings/cp861.py b/Lib/encodings/cp861.py
index 3f07fba..8db3b40 100644
--- a/Lib/encodings/cp861.py
+++ b/Lib/encodings/cp861.py
@@ -1,9 +1,9 @@
-""" Python Character Mapping Codec generated from 'CP861.TXT'.
-
+""" Python Character Mapping Codec generated from 'CP861.TXT' with gencodec.py.
 
 Written by Marc-Andre Lemburg (mal@lemburg.com).
 
 (c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+(c) Copyright 2000 Guido van Rossum.
 
 """#"
 
@@ -35,8 +35,8 @@
 
 ### Decoding Map
 
-decoding_map = {
-
+decoding_map = codecs.make_identity_dict(range(256))
+decoding_map.update({
 	0x0080: 0x00c7,	# LATIN CAPITAL LETTER C WITH CEDILLA
 	0x0081: 0x00fc,	# LATIN SMALL LETTER U WITH DIAERESIS
 	0x0082: 0x00e9,	# LATIN SMALL LETTER E WITH ACUTE
@@ -165,7 +165,7 @@
 	0x00fd: 0x00b2,	# SUPERSCRIPT TWO
 	0x00fe: 0x25a0,	# BLACK SQUARE
 	0x00ff: 0x00a0,	# NO-BREAK SPACE
-}
+})
 
 ### Encoding Map
 
diff --git a/Lib/encodings/cp862.py b/Lib/encodings/cp862.py
index 4bc1cbe..1cac3e2 100644
--- a/Lib/encodings/cp862.py
+++ b/Lib/encodings/cp862.py
@@ -1,9 +1,9 @@
-""" Python Character Mapping Codec generated from 'CP862.TXT'.
-
+""" Python Character Mapping Codec generated from 'CP862.TXT' with gencodec.py.
 
 Written by Marc-Andre Lemburg (mal@lemburg.com).
 
 (c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+(c) Copyright 2000 Guido van Rossum.
 
 """#"
 
@@ -35,8 +35,8 @@
 
 ### Decoding Map
 
-decoding_map = {
-
+decoding_map = codecs.make_identity_dict(range(256))
+decoding_map.update({
 	0x0080: 0x05d0,	# HEBREW LETTER ALEF
 	0x0081: 0x05d1,	# HEBREW LETTER BET
 	0x0082: 0x05d2,	# HEBREW LETTER GIMEL
@@ -165,7 +165,7 @@
 	0x00fd: 0x00b2,	# SUPERSCRIPT TWO
 	0x00fe: 0x25a0,	# BLACK SQUARE
 	0x00ff: 0x00a0,	# NO-BREAK SPACE
-}
+})
 
 ### Encoding Map
 
diff --git a/Lib/encodings/cp863.py b/Lib/encodings/cp863.py
index 3e6103f..ecdc391 100644
--- a/Lib/encodings/cp863.py
+++ b/Lib/encodings/cp863.py
@@ -1,9 +1,9 @@
-""" Python Character Mapping Codec generated from 'CP863.TXT'.
-
+""" Python Character Mapping Codec generated from 'CP863.TXT' with gencodec.py.
 
 Written by Marc-Andre Lemburg (mal@lemburg.com).
 
 (c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+(c) Copyright 2000 Guido van Rossum.
 
 """#"
 
@@ -35,8 +35,8 @@
 
 ### Decoding Map
 
-decoding_map = {
-
+decoding_map = codecs.make_identity_dict(range(256))
+decoding_map.update({
 	0x0080: 0x00c7,	# LATIN CAPITAL LETTER C WITH CEDILLA
 	0x0081: 0x00fc,	# LATIN SMALL LETTER U WITH DIAERESIS
 	0x0082: 0x00e9,	# LATIN SMALL LETTER E WITH ACUTE
@@ -165,7 +165,7 @@
 	0x00fd: 0x00b2,	# SUPERSCRIPT TWO
 	0x00fe: 0x25a0,	# BLACK SQUARE
 	0x00ff: 0x00a0,	# NO-BREAK SPACE
-}
+})
 
 ### Encoding Map
 
diff --git a/Lib/encodings/cp864.py b/Lib/encodings/cp864.py
index 8193278..861fb00 100644
--- a/Lib/encodings/cp864.py
+++ b/Lib/encodings/cp864.py
@@ -1,9 +1,9 @@
-""" Python Character Mapping Codec generated from 'CP864.TXT'.
-
+""" Python Character Mapping Codec generated from 'CP864.TXT' with gencodec.py.
 
 Written by Marc-Andre Lemburg (mal@lemburg.com).
 
 (c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+(c) Copyright 2000 Guido van Rossum.
 
 """#"
 
@@ -35,8 +35,8 @@
 
 ### Decoding Map
 
-decoding_map = {
-
+decoding_map = codecs.make_identity_dict(range(256))
+decoding_map.update({
 	0x0025: 0x066a,	# ARABIC PERCENT SIGN
 	0x0080: 0x00b0,	# DEGREE SIGN
 	0x0081: 0x00b7,	# MIDDLE DOT
@@ -163,7 +163,7 @@
 	0x00fd: 0xfef1,	# ARABIC LETTER YEH ISOLATED FORM
 	0x00fe: 0x25a0,	# BLACK SQUARE
 	0x00ff: None,	# UNDEFINED
-}
+})
 
 ### Encoding Map
 
diff --git a/Lib/encodings/cp865.py b/Lib/encodings/cp865.py
index eaed7a9..4d9010d 100644
--- a/Lib/encodings/cp865.py
+++ b/Lib/encodings/cp865.py
@@ -1,9 +1,9 @@
-""" Python Character Mapping Codec generated from 'CP865.TXT'.
-
+""" Python Character Mapping Codec generated from 'CP865.TXT' with gencodec.py.
 
 Written by Marc-Andre Lemburg (mal@lemburg.com).
 
 (c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+(c) Copyright 2000 Guido van Rossum.
 
 """#"
 
@@ -35,8 +35,8 @@
 
 ### Decoding Map
 
-decoding_map = {
-
+decoding_map = codecs.make_identity_dict(range(256))
+decoding_map.update({
 	0x0080: 0x00c7,	# LATIN CAPITAL LETTER C WITH CEDILLA
 	0x0081: 0x00fc,	# LATIN SMALL LETTER U WITH DIAERESIS
 	0x0082: 0x00e9,	# LATIN SMALL LETTER E WITH ACUTE
@@ -165,7 +165,7 @@
 	0x00fd: 0x00b2,	# SUPERSCRIPT TWO
 	0x00fe: 0x25a0,	# BLACK SQUARE
 	0x00ff: 0x00a0,	# NO-BREAK SPACE
-}
+})
 
 ### Encoding Map
 
diff --git a/Lib/encodings/cp866.py b/Lib/encodings/cp866.py
index 25e1a50..6a8b0b0 100644
--- a/Lib/encodings/cp866.py
+++ b/Lib/encodings/cp866.py
@@ -1,9 +1,9 @@
-""" Python Character Mapping Codec generated from 'CP866.TXT'.
-
+""" Python Character Mapping Codec generated from 'CP866.TXT' with gencodec.py.
 
 Written by Marc-Andre Lemburg (mal@lemburg.com).
 
 (c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+(c) Copyright 2000 Guido van Rossum.
 
 """#"
 
@@ -35,8 +35,8 @@
 
 ### Decoding Map
 
-decoding_map = {
-
+decoding_map = codecs.make_identity_dict(range(256))
+decoding_map.update({
 	0x0080: 0x0410,	# CYRILLIC CAPITAL LETTER A
 	0x0081: 0x0411,	# CYRILLIC CAPITAL LETTER BE
 	0x0082: 0x0412,	# CYRILLIC CAPITAL LETTER VE
@@ -165,7 +165,7 @@
 	0x00fd: 0x00a4,	# CURRENCY SIGN
 	0x00fe: 0x25a0,	# BLACK SQUARE
 	0x00ff: 0x00a0,	# NO-BREAK SPACE
-}
+})
 
 ### Encoding Map
 
diff --git a/Lib/encodings/cp869.py b/Lib/encodings/cp869.py
index 840335f..65d2b2e 100644
--- a/Lib/encodings/cp869.py
+++ b/Lib/encodings/cp869.py
@@ -1,9 +1,9 @@
-""" Python Character Mapping Codec generated from 'CP869.TXT'.
-
+""" Python Character Mapping Codec generated from 'CP869.TXT' with gencodec.py.
 
 Written by Marc-Andre Lemburg (mal@lemburg.com).
 
 (c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+(c) Copyright 2000 Guido van Rossum.
 
 """#"
 
@@ -35,8 +35,8 @@
 
 ### Decoding Map
 
-decoding_map = {
-
+decoding_map = codecs.make_identity_dict(range(256))
+decoding_map.update({
 	0x0080: None,	# UNDEFINED
 	0x0081: None,	# UNDEFINED
 	0x0082: None,	# UNDEFINED
@@ -165,7 +165,7 @@
 	0x00fd: 0x03ce,	# GREEK SMALL LETTER OMEGA WITH TONOS
 	0x00fe: 0x25a0,	# BLACK SQUARE
 	0x00ff: 0x00a0,	# NO-BREAK SPACE
-}
+})
 
 ### Encoding Map
 
diff --git a/Lib/encodings/cp874.py b/Lib/encodings/cp874.py
index 0231c7a..31f4d3d 100644
--- a/Lib/encodings/cp874.py
+++ b/Lib/encodings/cp874.py
@@ -1,9 +1,9 @@
-""" Python Character Mapping Codec generated from 'CP874.TXT'.
-
+""" Python Character Mapping Codec generated from 'CP874.TXT' with gencodec.py.
 
 Written by Marc-Andre Lemburg (mal@lemburg.com).
 
 (c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+(c) Copyright 2000 Guido van Rossum.
 
 """#"
 
@@ -35,8 +35,8 @@
 
 ### Decoding Map
 
-decoding_map = {
-
+decoding_map = codecs.make_identity_dict(range(256))
+decoding_map.update({
 	0x0080: 0x20ac,	# EURO SIGN
 	0x0081: None,	# UNDEFINED
 	0x0082: None,	# UNDEFINED
@@ -164,7 +164,7 @@
 	0x00fd: None,	# UNDEFINED
 	0x00fe: None,	# UNDEFINED
 	0x00ff: None,	# UNDEFINED
-}
+})
 
 ### Encoding Map
 
diff --git a/Lib/encodings/cp875.py b/Lib/encodings/cp875.py
index 924c0a0..3500446 100644
--- a/Lib/encodings/cp875.py
+++ b/Lib/encodings/cp875.py
@@ -1,9 +1,9 @@
-""" Python Character Mapping Codec generated from 'CP875.TXT'.
-
+""" Python Character Mapping Codec generated from 'CP875.TXT' with gencodec.py.
 
 Written by Marc-Andre Lemburg (mal@lemburg.com).
 
 (c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+(c) Copyright 2000 Guido van Rossum.
 
 """#"
 
@@ -35,8 +35,8 @@
 
 ### Decoding Map
 
-decoding_map = {
-
+decoding_map = codecs.make_identity_dict(range(256))
+decoding_map.update({
 	0x0004: 0x009c,	# CONTROL
 	0x0005: 0x0009,	# HORIZONTAL TABULATION
 	0x0006: 0x0086,	# CONTROL
@@ -274,7 +274,7 @@
 	0x00fd: 0x001a,	# SUBSTITUTE
 	0x00fe: 0x00bb,	# RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
 	0x00ff: 0x009f,	# CONTROL
-}
+})
 
 ### Encoding Map
 
diff --git a/Lib/encodings/iso8859_1.py b/Lib/encodings/iso8859_1.py
index 7355853..f4c0bf7 100644
--- a/Lib/encodings/iso8859_1.py
+++ b/Lib/encodings/iso8859_1.py
@@ -1,9 +1,9 @@
-""" Python Character Mapping Codec generated from '8859-1.TXT'.
-
+""" Python Character Mapping Codec generated from '8859-1.TXT' with gencodec.py.
 
 Written by Marc-Andre Lemburg (mal@lemburg.com).
 
 (c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+(c) Copyright 2000 Guido van Rossum.
 
 """#"
 
@@ -22,10 +22,7 @@
         return codecs.charmap_decode(input,errors,decoding_map)
 
 class StreamWriter(Codec,codecs.StreamWriter):
-
-    def __init__(self,stream,errors='strict'):
-
-        codecs.StreamWriter.__init__(self,strict,errors)
+    pass
         
 class StreamReader(Codec,codecs.StreamReader):
     pass
@@ -38,9 +35,9 @@
 
 ### Decoding Map
 
-decoding_map = {
-
-}
+decoding_map = codecs.make_identity_dict(range(256))
+decoding_map.update({
+})
 
 ### Encoding Map
 
diff --git a/Lib/encodings/iso8859_10.py b/Lib/encodings/iso8859_10.py
index 96b435c..c43c653 100644
--- a/Lib/encodings/iso8859_10.py
+++ b/Lib/encodings/iso8859_10.py
@@ -1,9 +1,9 @@
-""" Python Character Mapping Codec generated from '8859-10.TXT'.
-
+""" Python Character Mapping Codec generated from '8859-10.TXT' with gencodec.py.
 
 Written by Marc-Andre Lemburg (mal@lemburg.com).
 
 (c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+(c) Copyright 2000 Guido van Rossum.
 
 """#"
 
@@ -35,8 +35,8 @@
 
 ### Decoding Map
 
-decoding_map = {
-
+decoding_map = codecs.make_identity_dict(range(256))
+decoding_map.update({
 	0x00a1: 0x0104,	# 	LATIN CAPITAL LETTER A WITH OGONEK
 	0x00a2: 0x0112,	# 	LATIN CAPITAL LETTER E WITH MACRON
 	0x00a3: 0x0122,	# 	LATIN CAPITAL LETTER G WITH CEDILLA
@@ -83,7 +83,7 @@
 	0x00f7: 0x0169,	# 	LATIN SMALL LETTER U WITH TILDE
 	0x00f9: 0x0173,	# 	LATIN SMALL LETTER U WITH OGONEK
 	0x00ff: 0x0138,	# 	LATIN SMALL LETTER KRA
-}
+})
 
 ### Encoding Map
 
diff --git a/Lib/encodings/iso8859_13.py b/Lib/encodings/iso8859_13.py
index d8b2230..2ab5292 100644
--- a/Lib/encodings/iso8859_13.py
+++ b/Lib/encodings/iso8859_13.py
@@ -1,9 +1,9 @@
-""" Python Character Mapping Codec generated from '8859-13.TXT'.
-
+""" Python Character Mapping Codec generated from '8859-13.TXT' with gencodec.py.
 
 Written by Marc-Andre Lemburg (mal@lemburg.com).
 
 (c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+(c) Copyright 2000 Guido van Rossum.
 
 """#"
 
@@ -35,8 +35,8 @@
 
 ### Decoding Map
 
-decoding_map = {
-
+decoding_map = codecs.make_identity_dict(range(256))
+decoding_map.update({
 	0x00a1: 0x201d,	# 	RIGHT DOUBLE QUOTATION MARK
 	0x00a5: 0x201e,	# 	DOUBLE LOW-9 QUOTATION MARK
 	0x00a8: 0x00d8,	# 	LATIN CAPITAL LETTER O WITH STROKE
@@ -93,7 +93,7 @@
 	0x00fd: 0x017c,	# 	LATIN SMALL LETTER Z WITH DOT ABOVE
 	0x00fe: 0x017e,	# 	LATIN SMALL LETTER Z WITH CARON
 	0x00ff: 0x2019,	# 	RIGHT SINGLE QUOTATION MARK
-}
+})
 
 ### Encoding Map
 
diff --git a/Lib/encodings/iso8859_14.py b/Lib/encodings/iso8859_14.py
index 8ee0aa9..5533e96 100644
--- a/Lib/encodings/iso8859_14.py
+++ b/Lib/encodings/iso8859_14.py
@@ -1,9 +1,9 @@
-""" Python Character Mapping Codec generated from '8859-14.TXT'.
-
+""" Python Character Mapping Codec generated from '8859-14.TXT' with gencodec.py.
 
 Written by Marc-Andre Lemburg (mal@lemburg.com).
 
 (c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+(c) Copyright 2000 Guido van Rossum.
 
 """#"
 
@@ -35,8 +35,8 @@
 
 ### Decoding Map
 
-decoding_map = {
-
+decoding_map = codecs.make_identity_dict(range(256))
+decoding_map.update({
 	0x00a1: 0x1e02,	# 	LATIN CAPITAL LETTER B WITH DOT ABOVE
 	0x00a2: 0x1e03,	# 	LATIN SMALL LETTER B WITH DOT ABOVE
 	0x00a4: 0x010a,	# 	LATIN CAPITAL LETTER C WITH DOT ABOVE
@@ -68,7 +68,7 @@
 	0x00f0: 0x0175,	# 	LATIN SMALL LETTER W WITH CIRCUMFLEX
 	0x00f7: 0x1e6b,	# 	LATIN SMALL LETTER T WITH DOT ABOVE
 	0x00fe: 0x0177,	# 	LATIN SMALL LETTER Y WITH CIRCUMFLEX
-}
+})
 
 ### Encoding Map
 
diff --git a/Lib/encodings/iso8859_15.py b/Lib/encodings/iso8859_15.py
index 862ff28..7bffff4 100644
--- a/Lib/encodings/iso8859_15.py
+++ b/Lib/encodings/iso8859_15.py
@@ -1,9 +1,9 @@
-""" Python Character Mapping Codec generated from '8859-15.TXT'.
-
+""" Python Character Mapping Codec generated from '8859-15.TXT' with gencodec.py.
 
 Written by Marc-Andre Lemburg (mal@lemburg.com).
 
 (c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+(c) Copyright 2000 Guido van Rossum.
 
 """#"
 
@@ -35,8 +35,8 @@
 
 ### Decoding Map
 
-decoding_map = {
-
+decoding_map = codecs.make_identity_dict(range(256))
+decoding_map.update({
 	0x00a4: 0x20ac,	# 	EURO SIGN
 	0x00a6: 0x0160,	# 	LATIN CAPITAL LETTER S WITH CARON
 	0x00a8: 0x0161,	# 	LATIN SMALL LETTER S WITH CARON
@@ -45,7 +45,7 @@
 	0x00bc: 0x0152,	# 	LATIN CAPITAL LIGATURE OE
 	0x00bd: 0x0153,	# 	LATIN SMALL LIGATURE OE
 	0x00be: 0x0178,	# 	LATIN CAPITAL LETTER Y WITH DIAERESIS
-}
+})
 
 ### Encoding Map
 
diff --git a/Lib/encodings/iso8859_2.py b/Lib/encodings/iso8859_2.py
index 034001a..481f9a0 100644
--- a/Lib/encodings/iso8859_2.py
+++ b/Lib/encodings/iso8859_2.py
@@ -1,9 +1,9 @@
-""" Python Character Mapping Codec generated from '8859-2.TXT'.
-
+""" Python Character Mapping Codec generated from '8859-2.TXT' with gencodec.py.
 
 Written by Marc-Andre Lemburg (mal@lemburg.com).
 
 (c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+(c) Copyright 2000 Guido van Rossum.
 
 """#"
 
@@ -35,8 +35,8 @@
 
 ### Decoding Map
 
-decoding_map = {
-
+decoding_map = codecs.make_identity_dict(range(256))
+decoding_map.update({
 	0x00a1: 0x0104,	# 	LATIN CAPITAL LETTER A WITH OGONEK
 	0x00a2: 0x02d8,	# 	BREVE
 	0x00a3: 0x0141,	# 	LATIN CAPITAL LETTER L WITH STROKE
@@ -94,7 +94,7 @@
 	0x00fb: 0x0171,	# 	LATIN SMALL LETTER U WITH DOUBLE ACUTE
 	0x00fe: 0x0163,	# 	LATIN SMALL LETTER T WITH CEDILLA
 	0x00ff: 0x02d9,	# 	DOT ABOVE
-}
+})
 
 ### Encoding Map
 
diff --git a/Lib/encodings/iso8859_3.py b/Lib/encodings/iso8859_3.py
index f262767..c2820ad 100644
--- a/Lib/encodings/iso8859_3.py
+++ b/Lib/encodings/iso8859_3.py
@@ -1,9 +1,9 @@
-""" Python Character Mapping Codec generated from '8859-3.TXT'.
-
+""" Python Character Mapping Codec generated from '8859-3.TXT' with gencodec.py.
 
 Written by Marc-Andre Lemburg (mal@lemburg.com).
 
 (c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+(c) Copyright 2000 Guido van Rossum.
 
 """#"
 
@@ -35,15 +35,17 @@
 
 ### Decoding Map
 
-decoding_map = {
-
+decoding_map = codecs.make_identity_dict(range(256))
+decoding_map.update({
 	0x00a1: 0x0126,	# 	LATIN CAPITAL LETTER H WITH STROKE
 	0x00a2: 0x02d8,	# 	BREVE
+	0x00a5: None,
 	0x00a6: 0x0124,	# 	LATIN CAPITAL LETTER H WITH CIRCUMFLEX
 	0x00a9: 0x0130,	# 	LATIN CAPITAL LETTER I WITH DOT ABOVE
 	0x00aa: 0x015e,	# 	LATIN CAPITAL LETTER S WITH CEDILLA
 	0x00ab: 0x011e,	# 	LATIN CAPITAL LETTER G WITH BREVE
 	0x00ac: 0x0134,	# 	LATIN CAPITAL LETTER J WITH CIRCUMFLEX
+	0x00ae: None,
 	0x00af: 0x017b,	# 	LATIN CAPITAL LETTER Z WITH DOT ABOVE
 	0x00b1: 0x0127,	# 	LATIN SMALL LETTER H WITH STROKE
 	0x00b6: 0x0125,	# 	LATIN SMALL LETTER H WITH CIRCUMFLEX
@@ -51,21 +53,26 @@
 	0x00ba: 0x015f,	# 	LATIN SMALL LETTER S WITH CEDILLA
 	0x00bb: 0x011f,	# 	LATIN SMALL LETTER G WITH BREVE
 	0x00bc: 0x0135,	# 	LATIN SMALL LETTER J WITH CIRCUMFLEX
+	0x00be: None,
 	0x00bf: 0x017c,	# 	LATIN SMALL LETTER Z WITH DOT ABOVE
+	0x00c3: None,
 	0x00c5: 0x010a,	# 	LATIN CAPITAL LETTER C WITH DOT ABOVE
 	0x00c6: 0x0108,	# 	LATIN CAPITAL LETTER C WITH CIRCUMFLEX
+	0x00d0: None,
 	0x00d5: 0x0120,	# 	LATIN CAPITAL LETTER G WITH DOT ABOVE
 	0x00d8: 0x011c,	# 	LATIN CAPITAL LETTER G WITH CIRCUMFLEX
 	0x00dd: 0x016c,	# 	LATIN CAPITAL LETTER U WITH BREVE
 	0x00de: 0x015c,	# 	LATIN CAPITAL LETTER S WITH CIRCUMFLEX
+	0x00e3: None,
 	0x00e5: 0x010b,	# 	LATIN SMALL LETTER C WITH DOT ABOVE
 	0x00e6: 0x0109,	# 	LATIN SMALL LETTER C WITH CIRCUMFLEX
+	0x00f0: None,
 	0x00f5: 0x0121,	# 	LATIN SMALL LETTER G WITH DOT ABOVE
 	0x00f8: 0x011d,	# 	LATIN SMALL LETTER G WITH CIRCUMFLEX
 	0x00fd: 0x016d,	# 	LATIN SMALL LETTER U WITH BREVE
 	0x00fe: 0x015d,	# 	LATIN SMALL LETTER S WITH CIRCUMFLEX
 	0x00ff: 0x02d9,	# 	DOT ABOVE
-}
+})
 
 ### Encoding Map
 
diff --git a/Lib/encodings/iso8859_4.py b/Lib/encodings/iso8859_4.py
index 29f9fd3..30d6ca6 100644
--- a/Lib/encodings/iso8859_4.py
+++ b/Lib/encodings/iso8859_4.py
@@ -1,9 +1,9 @@
-""" Python Character Mapping Codec generated from '8859-4.TXT'.
-
+""" Python Character Mapping Codec generated from '8859-4.TXT' with gencodec.py.
 
 Written by Marc-Andre Lemburg (mal@lemburg.com).
 
 (c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+(c) Copyright 2000 Guido van Rossum.
 
 """#"
 
@@ -35,8 +35,8 @@
 
 ### Decoding Map
 
-decoding_map = {
-
+decoding_map = codecs.make_identity_dict(range(256))
+decoding_map.update({
 	0x00a1: 0x0104,	# 	LATIN CAPITAL LETTER A WITH OGONEK
 	0x00a2: 0x0138,	# 	LATIN SMALL LETTER KRA
 	0x00a3: 0x0156,	# 	LATIN CAPITAL LETTER R WITH CEDILLA
@@ -87,7 +87,7 @@
 	0x00fd: 0x0169,	# 	LATIN SMALL LETTER U WITH TILDE
 	0x00fe: 0x016b,	# 	LATIN SMALL LETTER U WITH MACRON
 	0x00ff: 0x02d9,	# 	DOT ABOVE
-}
+})
 
 ### Encoding Map
 
diff --git a/Lib/encodings/iso8859_5.py b/Lib/encodings/iso8859_5.py
index d71c15f..2bdaa50 100644
--- a/Lib/encodings/iso8859_5.py
+++ b/Lib/encodings/iso8859_5.py
@@ -1,9 +1,9 @@
-""" Python Character Mapping Codec generated from '8859-5.TXT'.
-
+""" Python Character Mapping Codec generated from '8859-5.TXT' with gencodec.py.
 
 Written by Marc-Andre Lemburg (mal@lemburg.com).
 
 (c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+(c) Copyright 2000 Guido van Rossum.
 
 """#"
 
@@ -35,8 +35,8 @@
 
 ### Decoding Map
 
-decoding_map = {
-
+decoding_map = codecs.make_identity_dict(range(256))
+decoding_map.update({
 	0x00a1: 0x0401,	# 	CYRILLIC CAPITAL LETTER IO
 	0x00a2: 0x0402,	# 	CYRILLIC CAPITAL LETTER DJE
 	0x00a3: 0x0403,	# 	CYRILLIC CAPITAL LETTER GJE
@@ -131,7 +131,7 @@
 	0x00fd: 0x00a7,	# 	SECTION SIGN
 	0x00fe: 0x045e,	# 	CYRILLIC SMALL LETTER SHORT U
 	0x00ff: 0x045f,	# 	CYRILLIC SMALL LETTER DZHE
-}
+})
 
 ### Encoding Map
 
diff --git a/Lib/encodings/iso8859_6.py b/Lib/encodings/iso8859_6.py
index b4d4315..585fa11 100644
--- a/Lib/encodings/iso8859_6.py
+++ b/Lib/encodings/iso8859_6.py
@@ -1,9 +1,9 @@
-""" Python Character Mapping Codec generated from '8859-6.TXT'.
-
+""" Python Character Mapping Codec generated from '8859-6.TXT' with gencodec.py.
 
 Written by Marc-Andre Lemburg (mal@lemburg.com).
 
 (c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+(c) Copyright 2000 Guido van Rossum.
 
 """#"
 
@@ -35,11 +35,38 @@
 
 ### Decoding Map
 
-decoding_map = {
-
+decoding_map = codecs.make_identity_dict(range(256))
+decoding_map.update({
+	0x00a1: None,
+	0x00a2: None,
+	0x00a3: None,
+	0x00a5: None,
+	0x00a6: None,
+	0x00a7: None,
+	0x00a8: None,
+	0x00a9: None,
+	0x00aa: None,
+	0x00ab: None,
 	0x00ac: 0x060c,	# 	ARABIC COMMA
+	0x00ae: None,
+	0x00af: None,
+	0x00b0: None,
+	0x00b1: None,
+	0x00b2: None,
+	0x00b3: None,
+	0x00b4: None,
+	0x00b5: None,
+	0x00b6: None,
+	0x00b7: None,
+	0x00b8: None,
+	0x00b9: None,
+	0x00ba: None,
 	0x00bb: 0x061b,	# 	ARABIC SEMICOLON
+	0x00bc: None,
+	0x00bd: None,
+	0x00be: None,
 	0x00bf: 0x061f,	# 	ARABIC QUESTION MARK
+	0x00c0: None,
 	0x00c1: 0x0621,	# 	ARABIC LETTER HAMZA
 	0x00c2: 0x0622,	# 	ARABIC LETTER ALEF WITH MADDA ABOVE
 	0x00c3: 0x0623,	# 	ARABIC LETTER ALEF WITH HAMZA ABOVE
@@ -66,6 +93,11 @@
 	0x00d8: 0x0638,	# 	ARABIC LETTER ZAH
 	0x00d9: 0x0639,	# 	ARABIC LETTER AIN
 	0x00da: 0x063a,	# 	ARABIC LETTER GHAIN
+	0x00db: None,
+	0x00dc: None,
+	0x00dd: None,
+	0x00de: None,
+	0x00df: None,
 	0x00e0: 0x0640,	# 	ARABIC TATWEEL
 	0x00e1: 0x0641,	# 	ARABIC LETTER FEH
 	0x00e2: 0x0642,	# 	ARABIC LETTER QAF
@@ -85,7 +117,20 @@
 	0x00f0: 0x0650,	# 	ARABIC KASRA
 	0x00f1: 0x0651,	# 	ARABIC SHADDA
 	0x00f2: 0x0652,	# 	ARABIC SUKUN
-}
+	0x00f3: None,
+	0x00f4: None,
+	0x00f5: None,
+	0x00f6: None,
+	0x00f7: None,
+	0x00f8: None,
+	0x00f9: None,
+	0x00fa: None,
+	0x00fb: None,
+	0x00fc: None,
+	0x00fd: None,
+	0x00fe: None,
+	0x00ff: None,
+})
 
 ### Encoding Map
 
diff --git a/Lib/encodings/iso8859_7.py b/Lib/encodings/iso8859_7.py
index c847610..48f1bd5 100644
--- a/Lib/encodings/iso8859_7.py
+++ b/Lib/encodings/iso8859_7.py
@@ -1,9 +1,9 @@
-""" Python Character Mapping Codec generated from '8859-7.TXT'.
-
+""" Python Character Mapping Codec generated from '8859-7.TXT' with gencodec.py.
 
 Written by Marc-Andre Lemburg (mal@lemburg.com).
 
 (c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+(c) Copyright 2000 Guido van Rossum.
 
 """#"
 
@@ -35,10 +35,14 @@
 
 ### Decoding Map
 
-decoding_map = {
-
+decoding_map = codecs.make_identity_dict(range(256))
+decoding_map.update({
 	0x00a1: 0x2018,	# 	LEFT SINGLE QUOTATION MARK
 	0x00a2: 0x2019,	# 	RIGHT SINGLE QUOTATION MARK
+	0x00a4: None,
+	0x00a5: None,
+	0x00aa: None,
+	0x00ae: None,
 	0x00af: 0x2015,	# 	HORIZONTAL BAR
 	0x00b4: 0x0384,	# 	GREEK TONOS
 	0x00b5: 0x0385,	# 	GREEK DIALYTIKA TONOS
@@ -67,6 +71,7 @@
 	0x00cf: 0x039f,	# 	GREEK CAPITAL LETTER OMICRON
 	0x00d0: 0x03a0,	# 	GREEK CAPITAL LETTER PI
 	0x00d1: 0x03a1,	# 	GREEK CAPITAL LETTER RHO
+	0x00d2: None,
 	0x00d3: 0x03a3,	# 	GREEK CAPITAL LETTER SIGMA
 	0x00d4: 0x03a4,	# 	GREEK CAPITAL LETTER TAU
 	0x00d5: 0x03a5,	# 	GREEK CAPITAL LETTER UPSILON
@@ -111,7 +116,8 @@
 	0x00fc: 0x03cc,	# 	GREEK SMALL LETTER OMICRON WITH TONOS
 	0x00fd: 0x03cd,	# 	GREEK SMALL LETTER UPSILON WITH TONOS
 	0x00fe: 0x03ce,	# 	GREEK SMALL LETTER OMEGA WITH TONOS
-}
+	0x00ff: None,
+})
 
 ### Encoding Map
 
diff --git a/Lib/encodings/iso8859_8.py b/Lib/encodings/iso8859_8.py
index 72b783b..a19aa67 100644
--- a/Lib/encodings/iso8859_8.py
+++ b/Lib/encodings/iso8859_8.py
@@ -1,9 +1,9 @@
-""" Python Character Mapping Codec generated from '8859-8.TXT'.
-
+""" Python Character Mapping Codec generated from '8859-8.TXT' with gencodec.py.
 
 Written by Marc-Andre Lemburg (mal@lemburg.com).
 
 (c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+(c) Copyright 2000 Guido van Rossum.
 
 """#"
 
@@ -35,11 +35,43 @@
 
 ### Decoding Map
 
-decoding_map = {
-
+decoding_map = codecs.make_identity_dict(range(256))
+decoding_map.update({
+	0x00a1: None,
 	0x00aa: 0x00d7,	# 	MULTIPLICATION SIGN
-	0x00af: 0x203e,	# 	OVERLINE
 	0x00ba: 0x00f7,	# 	DIVISION SIGN
+	0x00bf: None,
+	0x00c0: None,
+	0x00c1: None,
+	0x00c2: None,
+	0x00c3: None,
+	0x00c4: None,
+	0x00c5: None,
+	0x00c6: None,
+	0x00c7: None,
+	0x00c8: None,
+	0x00c9: None,
+	0x00ca: None,
+	0x00cb: None,
+	0x00cc: None,
+	0x00cd: None,
+	0x00ce: None,
+	0x00cf: None,
+	0x00d0: None,
+	0x00d1: None,
+	0x00d2: None,
+	0x00d3: None,
+	0x00d4: None,
+	0x00d5: None,
+	0x00d6: None,
+	0x00d7: None,
+	0x00d8: None,
+	0x00d9: None,
+	0x00da: None,
+	0x00db: None,
+	0x00dc: None,
+	0x00dd: None,
+	0x00de: None,
 	0x00df: 0x2017,	# 	DOUBLE LOW LINE
 	0x00e0: 0x05d0,	# 	HEBREW LETTER ALEF
 	0x00e1: 0x05d1,	# 	HEBREW LETTER BET
@@ -68,7 +100,12 @@
 	0x00f8: 0x05e8,	# 	HEBREW LETTER RESH
 	0x00f9: 0x05e9,	# 	HEBREW LETTER SHIN
 	0x00fa: 0x05ea,	# 	HEBREW LETTER TAV
-}
+	0x00fb: None,
+	0x00fc: None,
+	0x00fd: 0x200e,	# 	LEFT-TO-RIGHT MARK
+	0x00fe: 0x200f,	# 	RIGHT-TO-LEFT MARK
+	0x00ff: None,
+})
 
 ### Encoding Map
 
diff --git a/Lib/encodings/iso8859_9.py b/Lib/encodings/iso8859_9.py
index 3f91d32..a278905 100644
--- a/Lib/encodings/iso8859_9.py
+++ b/Lib/encodings/iso8859_9.py
@@ -1,9 +1,9 @@
-""" Python Character Mapping Codec generated from '8859-9.TXT'.
-
+""" Python Character Mapping Codec generated from '8859-9.TXT' with gencodec.py.
 
 Written by Marc-Andre Lemburg (mal@lemburg.com).
 
 (c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+(c) Copyright 2000 Guido van Rossum.
 
 """#"
 
@@ -35,15 +35,15 @@
 
 ### Decoding Map
 
-decoding_map = {
-
+decoding_map = codecs.make_identity_dict(range(256))
+decoding_map.update({
 	0x00d0: 0x011e,	# 	LATIN CAPITAL LETTER G WITH BREVE
 	0x00dd: 0x0130,	# 	LATIN CAPITAL LETTER I WITH DOT ABOVE
 	0x00de: 0x015e,	# 	LATIN CAPITAL LETTER S WITH CEDILLA
 	0x00f0: 0x011f,	# 	LATIN SMALL LETTER G WITH BREVE
 	0x00fd: 0x0131,	# 	LATIN SMALL LETTER DOTLESS I
 	0x00fe: 0x015f,	# 	LATIN SMALL LETTER S WITH CEDILLA
-}
+})
 
 ### Encoding Map
 
diff --git a/Lib/encodings/koi8_r.py b/Lib/encodings/koi8_r.py
index 0e1c15b..c28004e 100644
--- a/Lib/encodings/koi8_r.py
+++ b/Lib/encodings/koi8_r.py
@@ -1,9 +1,9 @@
-""" Python Character Mapping Codec generated from 'KOI8-R.TXT'.
-
+""" Python Character Mapping Codec generated from 'KOI8-R.TXT' with gencodec.py.
 
 Written by Marc-Andre Lemburg (mal@lemburg.com).
 
 (c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+(c) Copyright 2000 Guido van Rossum.
 
 """#"
 
@@ -35,8 +35,8 @@
 
 ### Decoding Map
 
-decoding_map = {
-
+decoding_map = codecs.make_identity_dict(range(256))
+decoding_map.update({
 	0x0080: 0x2500,	# 	BOX DRAWINGS LIGHT HORIZONTAL
 	0x0081: 0x2502,	# 	BOX DRAWINGS LIGHT VERTICAL
 	0x0082: 0x250c,	# 	BOX DRAWINGS LIGHT DOWN AND RIGHT
@@ -165,7 +165,7 @@
 	0x00fd: 0x0429,	# 	CYRILLIC CAPITAL LETTER SHCHA
 	0x00fe: 0x0427,	# 	CYRILLIC CAPITAL LETTER CHE
 	0x00ff: 0x042a,	# 	CYRILLIC CAPITAL LETTER HARD SIGN
-}
+})
 
 ### Encoding Map
 
diff --git a/Lib/encodings/mac_cyrillic.py b/Lib/encodings/mac_cyrillic.py
index 1314836..4552831 100644
--- a/Lib/encodings/mac_cyrillic.py
+++ b/Lib/encodings/mac_cyrillic.py
@@ -1,9 +1,9 @@
-""" Python Character Mapping Codec generated from 'CYRILLIC.TXT'.
-
+""" Python Character Mapping Codec generated from 'CYRILLIC.TXT' with gencodec.py.
 
 Written by Marc-Andre Lemburg (mal@lemburg.com).
 
 (c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+(c) Copyright 2000 Guido van Rossum.
 
 """#"
 
@@ -35,8 +35,8 @@
 
 ### Decoding Map
 
-decoding_map = {
-
+decoding_map = codecs.make_identity_dict(range(256))
+decoding_map.update({
 	0x0080: 0x0410,	# CYRILLIC CAPITAL LETTER A
 	0x0081: 0x0411,	# CYRILLIC CAPITAL LETTER BE
 	0x0082: 0x0412,	# CYRILLIC CAPITAL LETTER VE
@@ -160,7 +160,7 @@
 	0x00fd: 0x044d,	# CYRILLIC SMALL LETTER E
 	0x00fe: 0x044e,	# CYRILLIC SMALL LETTER YU
 	0x00ff: 0x00a4,	# CURRENCY SIGN
-}
+})
 
 ### Encoding Map
 
diff --git a/Lib/encodings/mac_greek.py b/Lib/encodings/mac_greek.py
index 7673b83..b7040c4 100644
--- a/Lib/encodings/mac_greek.py
+++ b/Lib/encodings/mac_greek.py
@@ -1,9 +1,9 @@
-""" Python Character Mapping Codec generated from 'GREEK.TXT'.
-
+""" Python Character Mapping Codec generated from 'GREEK.TXT' with gencodec.py.
 
 Written by Marc-Andre Lemburg (mal@lemburg.com).
 
 (c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+(c) Copyright 2000 Guido van Rossum.
 
 """#"
 
@@ -35,8 +35,8 @@
 
 ### Decoding Map
 
-decoding_map = {
-
+decoding_map = codecs.make_identity_dict(range(256))
+decoding_map.update({
 	0x0080: 0x00c4,	# LATIN CAPITAL LETTER A WITH DIAERESIS
 	0x0081: 0x00b9,	# SUPERSCRIPT ONE
 	0x0082: 0x00b2,	# SUPERSCRIPT TWO
@@ -163,7 +163,7 @@
 	0x00fd: 0x0390,	# GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
 	0x00fe: 0x03b0,	# GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
 	0x00ff: None,	# UNDEFINED
-}
+})
 
 ### Encoding Map
 
diff --git a/Lib/encodings/mac_iceland.py b/Lib/encodings/mac_iceland.py
index 62e1f63..f20e134 100644
--- a/Lib/encodings/mac_iceland.py
+++ b/Lib/encodings/mac_iceland.py
@@ -1,9 +1,9 @@
-""" Python Character Mapping Codec generated from 'ICELAND.TXT'.
-
+""" Python Character Mapping Codec generated from 'ICELAND.TXT' with gencodec.py.
 
 Written by Marc-Andre Lemburg (mal@lemburg.com).
 
 (c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+(c) Copyright 2000 Guido van Rossum.
 
 """#"
 
@@ -35,8 +35,8 @@
 
 ### Decoding Map
 
-decoding_map = {
-
+decoding_map = codecs.make_identity_dict(range(256))
+decoding_map.update({
 	0x0080: 0x00c4,	# LATIN CAPITAL LETTER A WITH DIAERESIS
 	0x0081: 0x00c5,	# LATIN CAPITAL LETTER A WITH RING ABOVE
 	0x0082: 0x00c7,	# LATIN CAPITAL LETTER C WITH CEDILLA
@@ -159,7 +159,7 @@
 	0x00fd: 0x02dd,	# DOUBLE ACUTE ACCENT
 	0x00fe: 0x02db,	# OGONEK
 	0x00ff: 0x02c7,	# CARON
-}
+})
 
 ### Encoding Map
 
diff --git a/Lib/encodings/mac_latin2.py b/Lib/encodings/mac_latin2.py
index 7e64959..0fba502 100644
--- a/Lib/encodings/mac_latin2.py
+++ b/Lib/encodings/mac_latin2.py
@@ -1,9 +1,9 @@
-""" Python Character Mapping Codec generated from 'LATIN2.TXT'.
-
+""" Python Character Mapping Codec generated from 'LATIN2.TXT' with gencodec.py.
 
 Written by Marc-Andre Lemburg (mal@lemburg.com).
 
 (c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+(c) Copyright 2000 Guido van Rossum.
 
 """#"
 
@@ -35,8 +35,8 @@
 
 ### Decoding Map
 
-decoding_map = {
-
+decoding_map = codecs.make_identity_dict(range(256))
+decoding_map.update({
 	0x0080: 0x00c4,	# LATIN CAPITAL LETTER A WITH DIAERESIS
 	0x0081: 0x0100,	# LATIN CAPITAL LETTER A WITH MACRON
 	0x0082: 0x0101,	# LATIN SMALL LETTER A WITH MACRON
@@ -163,7 +163,7 @@
 	0x00fd: 0x017c,	# LATIN SMALL LETTER Z WITH DOT ABOVE
 	0x00fe: 0x0122,	# LATIN CAPITAL LETTER G WITH CEDILLA
 	0x00ff: 0x02c7,	# CARON
-}
+})
 
 ### Encoding Map
 
diff --git a/Lib/encodings/mac_roman.py b/Lib/encodings/mac_roman.py
index 9147e93..6d048a3 100644
--- a/Lib/encodings/mac_roman.py
+++ b/Lib/encodings/mac_roman.py
@@ -1,9 +1,9 @@
-""" Python Character Mapping Codec generated from 'ROMAN.TXT'.
-
+""" Python Character Mapping Codec generated from 'ROMAN.TXT' with gencodec.py.
 
 Written by Marc-Andre Lemburg (mal@lemburg.com).
 
 (c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+(c) Copyright 2000 Guido van Rossum.
 
 """#"
 
@@ -35,8 +35,8 @@
 
 ### Decoding Map
 
-decoding_map = {
-
+decoding_map = codecs.make_identity_dict(range(256))
+decoding_map.update({
 	0x0080: 0x00c4,	# LATIN CAPITAL LETTER A WITH DIAERESIS
 	0x0081: 0x00c5,	# LATIN CAPITAL LETTER A WITH RING ABOVE
 	0x0082: 0x00c7,	# LATIN CAPITAL LETTER C WITH CEDILLA
@@ -160,7 +160,7 @@
 	0x00fd: 0x02dd,	# DOUBLE ACUTE ACCENT
 	0x00fe: 0x02db,	# OGONEK
 	0x00ff: 0x02c7,	# CARON
-}
+})
 
 ### Encoding Map
 
diff --git a/Lib/encodings/mac_turkish.py b/Lib/encodings/mac_turkish.py
index 76b6bbe..c81a864 100644
--- a/Lib/encodings/mac_turkish.py
+++ b/Lib/encodings/mac_turkish.py
@@ -1,9 +1,9 @@
-""" Python Character Mapping Codec generated from 'TURKISH.TXT'.
-
+""" Python Character Mapping Codec generated from 'TURKISH.TXT' with gencodec.py.
 
 Written by Marc-Andre Lemburg (mal@lemburg.com).
 
 (c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+(c) Copyright 2000 Guido van Rossum.
 
 """#"
 
@@ -35,8 +35,8 @@
 
 ### Decoding Map
 
-decoding_map = {
-
+decoding_map = codecs.make_identity_dict(range(256))
+decoding_map.update({
 	0x0080: 0x00c4,	# LATIN CAPITAL LETTER A WITH DIAERESIS
 	0x0081: 0x00c5,	# LATIN CAPITAL LETTER A WITH RING ABOVE
 	0x0082: 0x00c7,	# LATIN CAPITAL LETTER C WITH CEDILLA
@@ -160,7 +160,7 @@
 	0x00fd: 0x02dd,	# DOUBLE ACUTE ACCENT
 	0x00fe: 0x02db,	# OGONEK
 	0x00ff: 0x02c7,	# CARON
-}
+})
 
 ### Encoding Map
 
diff --git a/Lib/test/test_unicode.py b/Lib/test/test_unicode.py
index 05aecd8..579bab1 100644
--- a/Lib/test/test_unicode.py
+++ b/Lib/test/test_unicode.py
@@ -494,14 +494,15 @@
     'cp852', 'cp855', 'cp860', 'cp861', 'cp862',
     'cp863', 'cp865', 'cp866',
     'iso8859_10', 'iso8859_13', 'iso8859_14', 'iso8859_15',
-    'iso8859_2', 'iso8859_3', 'iso8859_4', 'iso8859_5', 'iso8859_6',
-    'iso8859_7', 'iso8859_9', 'koi8_r', 'latin_1',
+    'iso8859_2', 'iso8859_4', 'iso8859_5', 
+    'iso8859_9', 'koi8_r', 'latin_1',
     'mac_cyrillic', 'mac_latin2',
 
     ### These have undefined mappings:
     #'cp1250', 'cp1251', 'cp1252', 'cp1253', 'cp1254', 'cp1255',
     #'cp1256', 'cp1257', 'cp1258',
     #'cp424', 'cp856', 'cp857', 'cp864', 'cp869', 'cp874',
+    #'iso8859_3', 'iso8859_6', 'iso8859_7', 
     #'mac_greek', 'mac_iceland','mac_roman', 'mac_turkish',
 
     ### These fail the round-trip:
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
index fe591b5..b9e457d 100644
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -1970,11 +1970,11 @@
 	Py_DECREF(w);
 	if (x == NULL) {
 	    if (PyErr_ExceptionMatches(PyExc_LookupError)) {
-		/* No mapping found: default to Latin-1 mapping */
+		/* No mapping found means: mapping is undefined. */
 		PyErr_Clear();
-		*p++ = (Py_UNICODE)ch;
-		continue;
-	    }
+		x = Py_None;
+		Py_INCREF(x);
+	    } else
 	    goto onError;
 	}
 
@@ -2086,16 +2086,11 @@
 	Py_DECREF(w);
 	if (x == NULL) {
 	    if (PyErr_ExceptionMatches(PyExc_LookupError)) {
-		/* No mapping found: default to Latin-1 mapping if possible */
+		/* No mapping found means: mapping is undefined. */
 		PyErr_Clear();
-		if (ch < 256) {
-		    *s++ = (char)ch;
-		    continue;
-		}
-		else if (!charmap_encoding_error(&p, &s, errors,
-				     "missing character mapping"))
-		    continue;
-	    }
+		x = Py_None;
+		Py_INCREF(x);
+	    } else
 	    goto onError;
 	}
 
diff --git a/Tools/scripts/gencodec.py b/Tools/scripts/gencodec.py
index 45b69b0..39b42ff 100644
--- a/Tools/scripts/gencodec.py
+++ b/Tools/scripts/gencodec.py
@@ -1,9 +1,9 @@
 """ Unicode Mapping Parser and Codec Generator.
 
 This script parses Unicode mapping files as available from the Unicode
-site (ftp.unicode.org) and creates Python codec modules from them. The
-codecs use the standard character mapping codec to actually apply the
-mapping.
+site (ftp://ftp.unicode.org/Public/MAPPINGS/) and creates Python codec
+modules from them. The codecs use the standard character mapping codec
+to actually apply the mapping.
 
 Synopsis: gencodec.py dir codec_prefix
 
@@ -18,6 +18,7 @@
 Written by Marc-Andre Lemburg (mal@lemburg.com).
 
 (c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+(c) Copyright Guido van Rossum, 2000.
 
 """#"
 
@@ -70,6 +71,10 @@
     lines = f.readlines()
     f.close()
     enc2uni = {}
+    identity = []
+    unmapped = range(256)
+    for i in range(256):
+        unmapped[i] = i
     for line in lines:
         line = strip(line)
         if not line or line[0] == '#':
@@ -85,8 +90,22 @@
             comment = ''
         else:
             comment = comment[1:]
-        if enc != uni:
+        if enc < 256:
+            unmapped.remove(enc)
+            if enc == uni:
+                identity.append(enc)
+            else:
+                enc2uni[enc] = (uni,comment)
+        else:
             enc2uni[enc] = (uni,comment)
+    # If there are more identity-mapped entries than unmapped entries,
+    # it pays to generate an identity dictionary first, add add explicit
+    # mappings to None for the rest
+    if len(identity)>=len(unmapped):
+        for enc in unmapped:
+            enc2uni[enc] = (None, "")
+        enc2uni['IDENTITY'] = 256
+
     return enc2uni
 
 def hexrepr(t,
@@ -143,11 +162,12 @@
     """
     l = [
         '''\
-""" Python Character Mapping Codec generated from '%s'.
+""" Python Character Mapping Codec generated from '%s' with gencodec.py.
 
 Written by Marc-Andre Lemburg (mal@lemburg.com).
 
 (c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+(c) Copyright 2000 Guido van Rossum.
 
 """#"
 
@@ -178,15 +198,23 @@
     return (Codec().encode,Codec().decode,StreamReader,StreamWriter)
 
 ### Decoding Map
-
-decoding_map = {
 ''' % name,
         ]
+
+    if map.has_key("IDENTITY"):
+        l.append("decoding_map = codecs.make_identity_dict(range(%d))"
+                 % map["IDENTITY"])
+        l.append("decoding_map.update({")
+        splits = 1
+        del map["IDENTITY"]
+    else:
+        l.append("decoding_map = {")
+        splits = 0
+        
     mappings = map.items()
     mappings.sort()
     append = l.append
     i = 0
-    splits = 0
     for e,value in mappings:
         try:
             (u,c) = value
@@ -198,7 +226,7 @@
             append('\t%s: %s,\t# %s' % (key,unicoderepr(u),c))
         else:
             append('\t%s: %s,' % (key,unicoderepr(u)))
-        i = i + 1
+        i += 1
         if i == 4096:
             # Split the definition into parts to that the Python
             # parser doesn't dump core
@@ -206,7 +234,7 @@
                 append('}')
             else:
                 append('})')
-            append('map.update({')
+            append('decoding_map.update({')
             i = 0
             splits = splits + 1
     if splits == 0:
@@ -265,7 +293,7 @@
     
     mapnames = os.listdir(dir)
     for mapname in mapnames:
-        if mapname[-len('.mapping'):] != '.mapping':
+        if not mapname.endswith('.mapping'):
             continue
         codefile = mapname[:-len('.mapping')] + '.py'
         print 'converting %s to %s' % (mapname,
