[SCM] WebKit Debian packaging branch, debian/unstable, updated. debian/1.1.15-1-40151-g37bb677

mjs mjs at 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Sat Sep 26 05:53:14 UTC 2009


The following commit has been merged in the debian/unstable branch:
commit e8e12995eb832498e62773bd0ba5fe87a0971113
Author: mjs <mjs at 268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Fri Dec 14 06:57:51 2001 +0000

    WebCore changes:
    
    	Changes for international character set support. Still needs work,
    	but no worse than before. amazon.co.jp renders almost correctly.
    
    	* src/kwq/KWQCharsets.h, src/kwq/KWQCharsets.mm:
    	(KWQCFStringEncodingFromIANACharsetName,
    	KWQCFStringEncodingFromMIB, KWQCFStringEncodingToIANACharsetName,
    	KWQCFStringEncodingToMIB): New functions that translate between
    	the Qt concept of charaxcter sets and the
    	(buildDictionaries): static helper function for the above.
    	* src/kwq/KWQtextcodec.mm: (codecForCFStringEncoding,
    	QTextCodec::codecForMib), QTextCodec::codecForName,
    	QTextCodec::codecForLocale, QTextCodec::name,QTextCodec::mibEnum):
    	Implement for real.
    	* src/kwq/KWQKCharsets.mm: (KCharsets::codecForName,
    	KCharsets::charsetForEncoding, KCharsets::charsetForEncoding):
    	Implement for real.
    	* src/kwq/KWQKHTMLPart.mm: (KHTMLPart::slotData): Get encoding
    	from headers if present.
    	(encodingFromContentType): Helper function for the above.
    	(KHTMLPart::begin): Reinitialize decoder for every page.
    	(KHTMLPart::write): Minor bug fix.
    	(KHTMLPart::setEncoding): Implement.
    	(KHTMLPart::khtmlMouseMoveEvent,
    	KHTMLPart::khtmlMouseReleaseEvent, KHTMLPart::checkCompleted):
    	Simplify ifdefs to make prepare-ChangeLog happy.
    	* src/kwq/qt/qstring.h, src/kwq/KWQString.mm:
    	(QString::fromCFString): New convenience method to create a
    	QString from an immutable CFString by copying,
    	* src/kwq/character-sets.txt: IANA document describing character
    	sets.
    	* src/kwq/make-charset-table.pl, src/kwq/make-mac-encodings.c:
    	Helper programs to construct charset tables from IANA document.
    	* src/kwq/Makefile.in: Update to handle the autogenerated code.
    	* src/kwq/.cvsignore: Ignore new autogenerated files.
    
    	* src/kdelibs/khtml/misc/decoder.cpp: (Decoder::decode): Fix
    	decoding when the encoding is specified in the http headers (which
    	seems like it could never have worked in KDE).
    
    	* include/WCBackForwardList.h, include/WCURICache.h,
    	include/WCURICacheData.h, include/WCURIEntry.h: Fix prototypes of
    	C functions with no arguments to use (void), not (), to avoid
    	warnings in WebKit.
    
    WebKit changes:
    
    	Warning fixes and support to pass the http headers along with
    	cache data items
    
    	* Cache.subproj/NSURICacheData.h, Cache.subproj/NSURICacheData.m:
    	(+[NSURICacheData
    	dataWithURL:status:error:headers:data:size:notificationString:userData:],
    	-[NSURICacheData
    	initWithURL:status:error:headers:data:size:notificationString:userData:]),
    	-[NSURICacheData dealloc], -[NSURICacheData error],
    	-[NSURICacheData headers]:
    	NSURICacheData now carries a copy of the response headers
    	dictionary.
    	* Cache.subproj/NSURICache.m: include "WCURICache.h" to fix warnings.
    	(-[NSURICache requestWithURL:requestor:userData:]):
    	Handle headers in CacheData.
    	* Cache.subproj/NSURILoad.h, Cache.subproj/NSURILoad.m:
    	(-[NSURILoad __NSURILoadReadStreamCallback:event:data:],
    	-[NSURILoad headers], -[NSURILoad dealloc], -[NSURILoad done]):
    	An NSURILoad object now carries the response headers associated
    	with its connection, if any.
    
    	* History.subproj/WKBackForwardList.m: include WCBackForwardList.h
    	to fix warning.
    	* History.subproj/WKURIEntry.m: include WCURIEntry.h to fix
    	warning.
    	* Misc.subproj/WebKitDebug.h: Use (void) for C prototypes, not ().
    	* WebView.subproj/NSWebPageDataSource.mm: (+[NSWebPageDataSource
    	initialize]): Remove unused variable to fix warning.
    	* WebKit.pbproj/project.pbxproj: Enable many warning flags and -Werror
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@500 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/ChangeLog-2002-12-03 b/WebCore/ChangeLog-2002-12-03
index 4c6e174..257d81a 100644
--- a/WebCore/ChangeLog-2002-12-03
+++ b/WebCore/ChangeLog-2002-12-03
@@ -1,9 +1,55 @@
+2001-12-13  Maciej Stachowiak  <mjs at apple.com>
+
+	Changes for international character set support. Still needs work,
+	but no worse than before. amazon.co.jp renders almost correctly.
+	
+	* src/kwq/KWQCharsets.h, src/kwq/KWQCharsets.mm:
+	(KWQCFStringEncodingFromIANACharsetName,
+	KWQCFStringEncodingFromMIB, KWQCFStringEncodingToIANACharsetName,
+	KWQCFStringEncodingToMIB): New functions that translate between
+	the Qt concept of charaxcter sets and the
+	(buildDictionaries): static helper function for the above.
+	* src/kwq/KWQtextcodec.mm: (codecForCFStringEncoding,
+	QTextCodec::codecForMib), QTextCodec::codecForName,
+	QTextCodec::codecForLocale, QTextCodec::name,QTextCodec::mibEnum):
+	Implement for real.
+	* src/kwq/KWQKCharsets.mm: (KCharsets::codecForName,
+	KCharsets::charsetForEncoding, KCharsets::charsetForEncoding):
+	Implement for real.
+	* src/kwq/KWQKHTMLPart.mm: (KHTMLPart::slotData): Get encoding
+	from headers if present.
+	(encodingFromContentType): Helper function for the above. 
+	(KHTMLPart::begin): Reinitialize decoder for every page.
+	(KHTMLPart::write): Minor bug fix.
+	(KHTMLPart::setEncoding): Implement.
+	(KHTMLPart::khtmlMouseMoveEvent,
+	KHTMLPart::khtmlMouseReleaseEvent, KHTMLPart::checkCompleted):
+	Simplify ifdefs to make prepare-ChangeLog happy.
+	* src/kwq/qt/qstring.h, src/kwq/KWQString.mm:
+	(QString::fromCFString): New convenience method to create a
+	QString from an immutable CFString by copying,
+	* src/kwq/character-sets.txt: IANA document describing character
+	sets.
+	* src/kwq/make-charset-table.pl, src/kwq/make-mac-encodings.c:
+	Helper programs to construct charset tables from IANA document.
+	* src/kwq/Makefile.in: Update to handle the autogenerated code.
+	* src/kwq/.cvsignore: Ignore new autogenerated files.
+	
+	* src/kdelibs/khtml/misc/decoder.cpp: (Decoder::decode): Fix
+	decoding when the encoding is specified in the http headers (which
+	seems like it could never have worked in KDE).
+
+	* include/WCBackForwardList.h, include/WCURICache.h,
+	include/WCURICacheData.h, include/WCURIEntry.h: Fix prototypes of
+	C functions with no arguments to use (void), not (), to avoid
+	warnings in WebKit.
+
 2001-12-11  Chris Blumenberg  <cblu at apple.com>
 
 	* ChangeLog:
 	* src/kwq/KWQKHTMLPart.mm:
 
-2001-12-11  Chris Blumenberg  <set EMAIL_ADDRESS environment variable>
+2001-12-11  Chris Blumenberg  <cblu at apple.com>
 
 	* src/kwq/KWQKHTMLPart.mm:
 
diff --git a/WebCore/ChangeLog-2003-10-25 b/WebCore/ChangeLog-2003-10-25
index 4c6e174..257d81a 100644
--- a/WebCore/ChangeLog-2003-10-25
+++ b/WebCore/ChangeLog-2003-10-25
@@ -1,9 +1,55 @@
+2001-12-13  Maciej Stachowiak  <mjs at apple.com>
+
+	Changes for international character set support. Still needs work,
+	but no worse than before. amazon.co.jp renders almost correctly.
+	
+	* src/kwq/KWQCharsets.h, src/kwq/KWQCharsets.mm:
+	(KWQCFStringEncodingFromIANACharsetName,
+	KWQCFStringEncodingFromMIB, KWQCFStringEncodingToIANACharsetName,
+	KWQCFStringEncodingToMIB): New functions that translate between
+	the Qt concept of charaxcter sets and the
+	(buildDictionaries): static helper function for the above.
+	* src/kwq/KWQtextcodec.mm: (codecForCFStringEncoding,
+	QTextCodec::codecForMib), QTextCodec::codecForName,
+	QTextCodec::codecForLocale, QTextCodec::name,QTextCodec::mibEnum):
+	Implement for real.
+	* src/kwq/KWQKCharsets.mm: (KCharsets::codecForName,
+	KCharsets::charsetForEncoding, KCharsets::charsetForEncoding):
+	Implement for real.
+	* src/kwq/KWQKHTMLPart.mm: (KHTMLPart::slotData): Get encoding
+	from headers if present.
+	(encodingFromContentType): Helper function for the above. 
+	(KHTMLPart::begin): Reinitialize decoder for every page.
+	(KHTMLPart::write): Minor bug fix.
+	(KHTMLPart::setEncoding): Implement.
+	(KHTMLPart::khtmlMouseMoveEvent,
+	KHTMLPart::khtmlMouseReleaseEvent, KHTMLPart::checkCompleted):
+	Simplify ifdefs to make prepare-ChangeLog happy.
+	* src/kwq/qt/qstring.h, src/kwq/KWQString.mm:
+	(QString::fromCFString): New convenience method to create a
+	QString from an immutable CFString by copying,
+	* src/kwq/character-sets.txt: IANA document describing character
+	sets.
+	* src/kwq/make-charset-table.pl, src/kwq/make-mac-encodings.c:
+	Helper programs to construct charset tables from IANA document.
+	* src/kwq/Makefile.in: Update to handle the autogenerated code.
+	* src/kwq/.cvsignore: Ignore new autogenerated files.
+	
+	* src/kdelibs/khtml/misc/decoder.cpp: (Decoder::decode): Fix
+	decoding when the encoding is specified in the http headers (which
+	seems like it could never have worked in KDE).
+
+	* include/WCBackForwardList.h, include/WCURICache.h,
+	include/WCURICacheData.h, include/WCURIEntry.h: Fix prototypes of
+	C functions with no arguments to use (void), not (), to avoid
+	warnings in WebKit.
+
 2001-12-11  Chris Blumenberg  <cblu at apple.com>
 
 	* ChangeLog:
 	* src/kwq/KWQKHTMLPart.mm:
 
-2001-12-11  Chris Blumenberg  <set EMAIL_ADDRESS environment variable>
+2001-12-11  Chris Blumenberg  <cblu at apple.com>
 
 	* src/kwq/KWQKHTMLPart.mm:
 
diff --git a/WebCore/ChangeLog-2005-08-23 b/WebCore/ChangeLog-2005-08-23
index 4c6e174..257d81a 100644
--- a/WebCore/ChangeLog-2005-08-23
+++ b/WebCore/ChangeLog-2005-08-23
@@ -1,9 +1,55 @@
+2001-12-13  Maciej Stachowiak  <mjs at apple.com>
+
+	Changes for international character set support. Still needs work,
+	but no worse than before. amazon.co.jp renders almost correctly.
+	
+	* src/kwq/KWQCharsets.h, src/kwq/KWQCharsets.mm:
+	(KWQCFStringEncodingFromIANACharsetName,
+	KWQCFStringEncodingFromMIB, KWQCFStringEncodingToIANACharsetName,
+	KWQCFStringEncodingToMIB): New functions that translate between
+	the Qt concept of charaxcter sets and the
+	(buildDictionaries): static helper function for the above.
+	* src/kwq/KWQtextcodec.mm: (codecForCFStringEncoding,
+	QTextCodec::codecForMib), QTextCodec::codecForName,
+	QTextCodec::codecForLocale, QTextCodec::name,QTextCodec::mibEnum):
+	Implement for real.
+	* src/kwq/KWQKCharsets.mm: (KCharsets::codecForName,
+	KCharsets::charsetForEncoding, KCharsets::charsetForEncoding):
+	Implement for real.
+	* src/kwq/KWQKHTMLPart.mm: (KHTMLPart::slotData): Get encoding
+	from headers if present.
+	(encodingFromContentType): Helper function for the above. 
+	(KHTMLPart::begin): Reinitialize decoder for every page.
+	(KHTMLPart::write): Minor bug fix.
+	(KHTMLPart::setEncoding): Implement.
+	(KHTMLPart::khtmlMouseMoveEvent,
+	KHTMLPart::khtmlMouseReleaseEvent, KHTMLPart::checkCompleted):
+	Simplify ifdefs to make prepare-ChangeLog happy.
+	* src/kwq/qt/qstring.h, src/kwq/KWQString.mm:
+	(QString::fromCFString): New convenience method to create a
+	QString from an immutable CFString by copying,
+	* src/kwq/character-sets.txt: IANA document describing character
+	sets.
+	* src/kwq/make-charset-table.pl, src/kwq/make-mac-encodings.c:
+	Helper programs to construct charset tables from IANA document.
+	* src/kwq/Makefile.in: Update to handle the autogenerated code.
+	* src/kwq/.cvsignore: Ignore new autogenerated files.
+	
+	* src/kdelibs/khtml/misc/decoder.cpp: (Decoder::decode): Fix
+	decoding when the encoding is specified in the http headers (which
+	seems like it could never have worked in KDE).
+
+	* include/WCBackForwardList.h, include/WCURICache.h,
+	include/WCURICacheData.h, include/WCURIEntry.h: Fix prototypes of
+	C functions with no arguments to use (void), not (), to avoid
+	warnings in WebKit.
+
 2001-12-11  Chris Blumenberg  <cblu at apple.com>
 
 	* ChangeLog:
 	* src/kwq/KWQKHTMLPart.mm:
 
-2001-12-11  Chris Blumenberg  <set EMAIL_ADDRESS environment variable>
+2001-12-11  Chris Blumenberg  <cblu at apple.com>
 
 	* src/kwq/KWQKHTMLPart.mm:
 
diff --git a/WebCore/include/WCBackForwardList.h b/WebCore/include/WCBackForwardList.h
index 8d9bdaa..15a3df7 100644
--- a/WebCore/include/WCBackForwardList.h
+++ b/WebCore/include/WCBackForwardList.h
@@ -25,7 +25,7 @@ extern "C" {
 
 // *** Factory method for WCBackForwardList objects
 
-id <WCBackForwardList> WCCreateBackForwardList(); 
+id <WCBackForwardList> WCCreateBackForwardList(void); 
 
 #if defined(__cplusplus)
 } // extern "C"
diff --git a/WebCore/include/WCURICache.h b/WebCore/include/WCURICache.h
index 9c236ad..e53902e 100644
--- a/WebCore/include/WCURICache.h
+++ b/WebCore/include/WCURICache.h
@@ -22,7 +22,7 @@ extern "C" {
 
 // *** Function to access WCURICache singleton
 
-id <WCURICache> WCGetDefaultURICache(); 
+id <WCURICache> WCGetDefaultURICache(void); 
 
 #if defined(__cplusplus)
 } // extern "C"
diff --git a/WebCore/include/WCURICacheData.h b/WebCore/include/WCURICacheData.h
index f1f1b9d..c4c025a 100644
--- a/WebCore/include/WCURICacheData.h
+++ b/WebCore/include/WCURICacheData.h
@@ -9,6 +9,7 @@
 -(NSURL *)url;
 -(id)status;
 -(id)error;
+-(NSDictionary *)headers;
 -(UInt8 *)cacheData;
 -(int)cacheDataSize;
 -(void *)userData;
diff --git a/WebCore/include/WCURIEntry.h b/WebCore/include/WCURIEntry.h
index 0950091..c5af231 100644
--- a/WebCore/include/WCURIEntry.h
+++ b/WebCore/include/WCURIEntry.h
@@ -38,7 +38,7 @@ extern "C" {
 
 // *** Factory method for WCURIEntry objects
 
-id <WCURIEntry> WCCreateURIEntry(); 
+id <WCURIEntry> WCCreateURIEntry(void); 
 
 #if defined(__cplusplus)
 } // extern "C"
diff --git a/WebCore/khtml/misc/decoder.cpp b/WebCore/khtml/misc/decoder.cpp
index 80c6d02..89d0462 100644
--- a/WebCore/khtml/misc/decoder.cpp
+++ b/WebCore/khtml/misc/decoder.cpp
@@ -84,7 +84,7 @@ void Decoder::setEncoding(const char *_encoding, bool force)
     if( !b ) // in case the codec didn't exist, we keep the old one (fixes some sites specifying invalid codecs)
 	m_codec = old;
     else
-	haveEncoding = force;
+        haveEncoding = force;
     delete m_decoder;
     m_decoder = m_codec->makeDecoder();
 #ifdef DECODE_DEBUG
@@ -230,7 +230,12 @@ QString Decoder::decode(const char *data, int len)
             }
             return QString::null;
         }
+    } 
+#ifdef _KWQ_
+    else {
+        buffer += QCString(data, len+1);
     }
+#endif
 
  found:
     // if we still haven't found an encoding latin1 will be used...
diff --git a/WebCore/kwq/.cvsignore b/WebCore/kwq/.cvsignore
index 0dd5e43..bccb4e5 100644
--- a/WebCore/kwq/.cvsignore
+++ b/WebCore/kwq/.cvsignore
@@ -2,3 +2,6 @@ Makefile
 *.dummy
 export-objects
 export-headers
+KWQCharsetData.c
+mac-encodings.txt
+make-mac-encodings
diff --git a/WebCore/kwq/KWQKFactory.mm b/WebCore/kwq/KWQCharsets.h
similarity index 78%
copy from WebCore/kwq/KWQKFactory.mm
copy to WebCore/kwq/KWQCharsets.h
index 2a2bfed..f4b8842 100644
--- a/WebCore/kwq/KWQKFactory.mm
+++ b/WebCore/kwq/KWQCharsets.h
@@ -23,23 +23,16 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
-#include <kwqdebug.h>
-#include <factory.h>
+#ifndef KWQCHARSETS_H_
+#define KWQCHARSETS_H_
 
-namespace KParts {
+#include <CoreFoundation/CoreFoundation.h>
 
-Factory::Factory()
-{
-    _logNotYetImplemented();
-}
+CFStringEncoding KWQCFStringEncodingFromIANACharsetName(CFStringRef charsetName);
+CFStringEncoding KWQCFStringEncodingFromMIB(int mib);
 
+CFStringRef KWQCFStringEncodingToIANACharsetName(CFStringEncoding encoding);
+int KWQCFStringEncodingToMIB(CFStringEncoding encoding);
 
-Factory::~Factory()
-{
-    _logNotYetImplemented();
-}
-
-
-} // namespace KParts
-
+#endif KWQCHARSETS_H_
 
diff --git a/WebCore/kwq/KWQCharsets.mm b/WebCore/kwq/KWQCharsets.mm
new file mode 100644
index 0000000..689ae3a
--- /dev/null
+++ b/WebCore/kwq/KWQCharsets.mm
@@ -0,0 +1,133 @@
+/*
+ * Copyright (C) 2001 Apple Computer, Inc.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+
+#include "KWQCharsets.h"
+#include <CoreFoundation/CoreFoundation.h>
+
+typedef struct CharsetEntry {
+  char *name;
+  int mib;
+  CFStringEncoding encoding;;
+} CharsetEntry;
+
+
+/* The following autogenerated file includes the charset data. */
+#include "KWQCharsetData.c"
+
+static CFMutableDictionaryRef nameToEncoding = NULL;
+static CFMutableDictionaryRef mibToEncoding = NULL;
+static CFMutableDictionaryRef encodingToName = NULL;
+static CFMutableDictionaryRef encodingToMIB = NULL;
+
+
+static void buildDictionaries (void)
+{
+  int i;
+
+  nameToEncoding = CFDictionaryCreateMutable(NULL, 0, &kCFTypeDictionaryKeyCallBacks, NULL);
+  mibToEncoding = CFDictionaryCreateMutable(NULL, 0, NULL, NULL);
+
+  encodingToName = CFDictionaryCreateMutable(NULL, 0, NULL, &kCFTypeDictionaryValueCallBacks);
+  encodingToMIB = CFDictionaryCreateMutable(NULL, 0, NULL, NULL);
+
+  for (i = 0; table[i].name != NULL; i++) {
+    CFStringRef name;
+    name = CFStringCreateWithCString(NULL, table[i].name, kCFStringEncodingASCII);
+
+    if (name != NULL) {
+      CFDictionarySetValue(nameToEncoding, (void *) name, (void *) table[i].encoding);
+      CFDictionarySetValue(encodingToName, (void *) table[i].encoding, (void *) name);
+    }
+
+    if (table[i].mib != -1) {
+      CFDictionarySetValue(mibToEncoding, (void *) table[i].mib, (void *) table[i].encoding);
+      CFDictionarySetValue(encodingToMIB, (void *) table[i].encoding, (void *) table[i].mib);
+    }
+  }
+}
+
+CFStringEncoding KWQCFStringEncodingFromIANACharsetName(CFStringRef charsetName)
+{
+  const void *value;
+
+  if (nameToEncoding == NULL) {
+    buildDictionaries ();
+  }
+  
+  if (CFDictionaryGetValueIfPresent(nameToEncoding, (void *) charsetName, &value)) {
+    return (CFStringEncoding) value;
+  } else {
+    return kCFStringEncodingInvalidId;
+  }
+}
+
+
+CFStringEncoding KWQCFStringEncodingFromMIB(int mib)
+{
+  const void *value;
+
+  if (mibToEncoding == NULL) {
+    buildDictionaries ();
+  }
+
+  if (CFDictionaryGetValueIfPresent(mibToEncoding, (void *) mib,  &value)) {
+    return (CFStringEncoding) value;
+  } else {
+    return kCFStringEncodingInvalidId;
+  }
+}
+
+
+
+CFStringRef KWQCFStringEncodingToIANACharsetName(CFStringEncoding encoding)
+{
+  const void *value;
+
+  if (encodingToName == NULL) {
+      buildDictionaries ();
+  }
+
+  if (CFDictionaryGetValueIfPresent(encodingToName, (void *) encoding, &value)) {
+      return (CFStringRef) value;
+  } else {
+    return NULL;
+  }
+}
+
+
+int KWQCFStringEncodingToMIB(CFStringEncoding encoding)
+{
+  const void *value;
+
+  if (encodingToMIB == NULL) {
+      buildDictionaries ();
+  }
+
+  if (CFDictionaryGetValueIfPresent(encodingToMIB, (void *) encoding, &value)) {
+      return (int) value;
+  } else {
+      return -1;
+  }
+}
diff --git a/WebCore/kwq/KWQKCharsets.mm b/WebCore/kwq/KWQKCharsets.mm
index 4e1d574..ef8c843 100644
--- a/WebCore/kwq/KWQKCharsets.mm
+++ b/WebCore/kwq/KWQKCharsets.mm
@@ -45,31 +45,34 @@ KCharsets::~KCharsets()
 
 QTextCodec *KCharsets::codecForName(const QString &qs) const
 {
-    // FIXME: need real implementation here
-    _logPartiallyImplemented();
     return QTextCodec::codecForName(qs.latin1());
 }
 
 QTextCodec *KCharsets::codecForName(const QString &qs, bool &ok) const
 {
-    // FIXME: need real implementation here
-    _logPartiallyImplemented();
-    ok = false;
-    return QTextCodec::codecForName(qs.latin1());
+    QTextCodec *codec = QTextCodec::codecForName(qs.latin1());
+    if (codec == NULL) {
+        ok = false;
+        codec = QTextCodec::codecForName("latin1");
+    } else {
+        ok = true;
+    }
+
+    return codec;
 }
 
 QFont::CharSet KCharsets::charsetForEncoding(const QString &) const
 {
     // FIXME: need real implementation here
     _logPartiallyImplemented();
-    return QFont::Latin1;
+    return QFont::Unicode;
 }
 
 QFont::CharSet KCharsets::charsetForEncoding(const QString &, bool) const
 {
     // FIXME: need real implementation here
     _logPartiallyImplemented();
-    return QFont::Latin1;
+    return QFont::Unicode;
 }
 
 void KCharsets::setQFont(QFont &font, QFont::CharSet) const
@@ -108,3 +111,4 @@ bool KCharsets::supportsScript(const QFont &, QFont::CharSet)
     _logPartiallyImplemented();
     return true;
 }
+
diff --git a/WebCore/kwq/KWQKHTMLPart.mm b/WebCore/kwq/KWQKHTMLPart.mm
index 1aecde7..9ef7ef5 100644
--- a/WebCore/kwq/KWQKHTMLPart.mm
+++ b/WebCore/kwq/KWQKHTMLPart.mm
@@ -202,15 +202,46 @@ KHTMLPart::~KHTMLPart()
     _logNotYetImplemented();
 }
 
+static NSString *
+encodingFromContentType (NSString *contentType)
+{
+    NSRange range;
+    NSString *result = nil;
+
+    if (contentType == nil) {
+	return result;
+    }
+
+    range = [contentType rangeOfString:@"charset="];
+    
+    if (range.length != 0) {
+        result = [contentType substringFromIndex:range.location+range.length];
+    }
+
+    result = [[result componentsSeparatedByString:@";"] objectAtIndex:0];
+
+    return result;
+}
+
 // NOTE: This code emulates the interface used by the original khtml part  
 void KHTMLPart::slotData(id <WCURICacheData> data) 
 {
+    NSString *encoding;
+    QString enc;
+
     if (!d->m_workingURL.isEmpty()) {
         //begin(d->m_workingURL, d->m_extension->urlArgs().xOffset, d->m_extension->urlArgs().yOffset);
         begin(d->m_workingURL, 0, 0);
         d->m_workingURL = KURL();
     }
-          
+
+    encoding = encodingFromContentType ([[data headers] objectForKey:@"Content-Type"]);
+    if (encoding != NULL) {
+        enc = QString::fromCFString((CFStringRef) encoding);
+
+        setEncoding (enc, true);
+    }
+
     write((const char *)[data cacheData], [data cacheDataSize]);    
 }
 
@@ -442,6 +473,12 @@ void KHTMLPart::begin( const KURL &url, int xOffset, int yOffset)
     d->m_baseURL = KURL();
     d->m_workingURL = url;
 
+    /* FIXME: this is a pretty gross way to make sure the decoder gets reinitialized for each page. */
+    if (d->m_decoder != NULL) {
+	delete d->m_decoder;
+	d->m_decoder = NULL;
+    }
+
     if (!d->m_workingURL.isEmpty())
     {
         KURL::List lst = KURL::split( d->m_workingURL );
@@ -503,7 +540,7 @@ void KHTMLPart::write(const char *str, int len)
     // begin lines added in lieu of big fixme    
     if ( !d->m_decoder ) {
         d->m_decoder = new khtml::Decoder();
-        if(d->m_encoding != QString::null)
+        if(!d->m_encoding.isNull())
             d->m_decoder->setEncoding(d->m_encoding.latin1(), d->m_haveEncoding);
         else {
             //FIXME: d->m_decoder->setEncoding(settings()->encoding().latin1(), d->m_haveEncoding);
@@ -603,7 +640,28 @@ bool KHTMLPart::setCharset( const QString &name, bool override = false )
 
 bool KHTMLPart::setEncoding( const QString &name, bool override = false )
 {
-    _logNeverImplemented();
+    d->m_encoding = name;
+    d->m_haveEncoding = override;
+
+/* FIXME: do we need any of these bits?
+//    setCharset( name, override );
+     d->m_charset = KGlobal::charsets()->charsetForEncoding(name);
+     d->m_settings->setCharset( d->m_charset );
+     // the script should not be unicode. We need to know the document is eg. arabic to be
+     // able to choose a unicode font that contains arabic glyphs.
+     d->m_settings->setScript( KGlobal::charsets()->charsetForEncoding( name, true ) );
+
+    if( !m_url.isEmpty() ) {
+        // reload document
+        closeURL();
+        KURL url = m_url;
+        m_url = 0;
+        openURL(url);
+    }
+
+    return true;
+*/
+    _logPartiallyImplemented();
     return FALSE;
 }
 
@@ -1061,6 +1119,7 @@ void KHTMLPart::khtmlMouseMoveEvent( khtml::MouseMoveEvent *event )
             ->setSelection(d->m_selectionEnd.handle(),d->m_endOffset,
                            d->m_selectionStart.handle(),d->m_startOffset);
       }
+    }
 #else
       if ( d->m_doc && d->m_view ) {
         QPoint diff( _mouse->globalPos() - d->m_dragLastPos );
@@ -1069,8 +1128,8 @@ void KHTMLPart::khtmlMouseMoveEvent( khtml::MouseMoveEvent *event )
           d->m_view->scrollBy( -diff.x(), -diff.y() );
           d->m_dragLastPos = _mouse->globalPos();
         }
-#endif
     }
+#endif
   }
 
 }
@@ -1116,7 +1175,6 @@ void KHTMLPart::khtmlMouseReleaseEvent( khtml::MouseReleaseEvent *event )
     }
   }
 #endif
-
 #ifndef KHTML_NO_SELECTION
   // delete selection in case start and end position are at the same point
   if(d->m_selectionStart == d->m_selectionEnd && d->m_startOffset == d->m_endOffset) {
@@ -1168,6 +1226,7 @@ void KHTMLPart::khtmlMouseReleaseEvent( khtml::MouseReleaseEvent *event )
     //emitSelectionChanged();
   }
 #endif
+
 }
 
 void KHTMLPart::khtmlDrawContentsEvent( khtml::DrawContentsEvent * )
@@ -1387,4 +1446,4 @@ void KHTMLPart::checkCompleted()
         // tell anyone who's interested that we're done
         [[NSNotificationCenter defaultCenter] postNotificationName:@"uri-done" object:urlString];
     }
-}
\ No newline at end of file
+}
diff --git a/WebCore/kwq/KWQKHTMLPartImpl.mm b/WebCore/kwq/KWQKHTMLPartImpl.mm
index 1aecde7..9ef7ef5 100644
--- a/WebCore/kwq/KWQKHTMLPartImpl.mm
+++ b/WebCore/kwq/KWQKHTMLPartImpl.mm
@@ -202,15 +202,46 @@ KHTMLPart::~KHTMLPart()
     _logNotYetImplemented();
 }
 
+static NSString *
+encodingFromContentType (NSString *contentType)
+{
+    NSRange range;
+    NSString *result = nil;
+
+    if (contentType == nil) {
+	return result;
+    }
+
+    range = [contentType rangeOfString:@"charset="];
+    
+    if (range.length != 0) {
+        result = [contentType substringFromIndex:range.location+range.length];
+    }
+
+    result = [[result componentsSeparatedByString:@";"] objectAtIndex:0];
+
+    return result;
+}
+
 // NOTE: This code emulates the interface used by the original khtml part  
 void KHTMLPart::slotData(id <WCURICacheData> data) 
 {
+    NSString *encoding;
+    QString enc;
+
     if (!d->m_workingURL.isEmpty()) {
         //begin(d->m_workingURL, d->m_extension->urlArgs().xOffset, d->m_extension->urlArgs().yOffset);
         begin(d->m_workingURL, 0, 0);
         d->m_workingURL = KURL();
     }
-          
+
+    encoding = encodingFromContentType ([[data headers] objectForKey:@"Content-Type"]);
+    if (encoding != NULL) {
+        enc = QString::fromCFString((CFStringRef) encoding);
+
+        setEncoding (enc, true);
+    }
+
     write((const char *)[data cacheData], [data cacheDataSize]);    
 }
 
@@ -442,6 +473,12 @@ void KHTMLPart::begin( const KURL &url, int xOffset, int yOffset)
     d->m_baseURL = KURL();
     d->m_workingURL = url;
 
+    /* FIXME: this is a pretty gross way to make sure the decoder gets reinitialized for each page. */
+    if (d->m_decoder != NULL) {
+	delete d->m_decoder;
+	d->m_decoder = NULL;
+    }
+
     if (!d->m_workingURL.isEmpty())
     {
         KURL::List lst = KURL::split( d->m_workingURL );
@@ -503,7 +540,7 @@ void KHTMLPart::write(const char *str, int len)
     // begin lines added in lieu of big fixme    
     if ( !d->m_decoder ) {
         d->m_decoder = new khtml::Decoder();
-        if(d->m_encoding != QString::null)
+        if(!d->m_encoding.isNull())
             d->m_decoder->setEncoding(d->m_encoding.latin1(), d->m_haveEncoding);
         else {
             //FIXME: d->m_decoder->setEncoding(settings()->encoding().latin1(), d->m_haveEncoding);
@@ -603,7 +640,28 @@ bool KHTMLPart::setCharset( const QString &name, bool override = false )
 
 bool KHTMLPart::setEncoding( const QString &name, bool override = false )
 {
-    _logNeverImplemented();
+    d->m_encoding = name;
+    d->m_haveEncoding = override;
+
+/* FIXME: do we need any of these bits?
+//    setCharset( name, override );
+     d->m_charset = KGlobal::charsets()->charsetForEncoding(name);
+     d->m_settings->setCharset( d->m_charset );
+     // the script should not be unicode. We need to know the document is eg. arabic to be
+     // able to choose a unicode font that contains arabic glyphs.
+     d->m_settings->setScript( KGlobal::charsets()->charsetForEncoding( name, true ) );
+
+    if( !m_url.isEmpty() ) {
+        // reload document
+        closeURL();
+        KURL url = m_url;
+        m_url = 0;
+        openURL(url);
+    }
+
+    return true;
+*/
+    _logPartiallyImplemented();
     return FALSE;
 }
 
@@ -1061,6 +1119,7 @@ void KHTMLPart::khtmlMouseMoveEvent( khtml::MouseMoveEvent *event )
             ->setSelection(d->m_selectionEnd.handle(),d->m_endOffset,
                            d->m_selectionStart.handle(),d->m_startOffset);
       }
+    }
 #else
       if ( d->m_doc && d->m_view ) {
         QPoint diff( _mouse->globalPos() - d->m_dragLastPos );
@@ -1069,8 +1128,8 @@ void KHTMLPart::khtmlMouseMoveEvent( khtml::MouseMoveEvent *event )
           d->m_view->scrollBy( -diff.x(), -diff.y() );
           d->m_dragLastPos = _mouse->globalPos();
         }
-#endif
     }
+#endif
   }
 
 }
@@ -1116,7 +1175,6 @@ void KHTMLPart::khtmlMouseReleaseEvent( khtml::MouseReleaseEvent *event )
     }
   }
 #endif
-
 #ifndef KHTML_NO_SELECTION
   // delete selection in case start and end position are at the same point
   if(d->m_selectionStart == d->m_selectionEnd && d->m_startOffset == d->m_endOffset) {
@@ -1168,6 +1226,7 @@ void KHTMLPart::khtmlMouseReleaseEvent( khtml::MouseReleaseEvent *event )
     //emitSelectionChanged();
   }
 #endif
+
 }
 
 void KHTMLPart::khtmlDrawContentsEvent( khtml::DrawContentsEvent * )
@@ -1387,4 +1446,4 @@ void KHTMLPart::checkCompleted()
         // tell anyone who's interested that we're done
         [[NSNotificationCenter defaultCenter] postNotificationName:@"uri-done" object:urlString];
     }
-}
\ No newline at end of file
+}
diff --git a/WebCore/kwq/KWQString.h b/WebCore/kwq/KWQString.h
index 3c972ef..8bd8fe9 100644
--- a/WebCore/kwq/KWQString.h
+++ b/WebCore/kwq/KWQString.h
@@ -340,6 +340,7 @@ public:
 #endif
     static QString fromStringWithEncoding(const char *, int, CFStringEncoding);
     static QString fromCFMutableString(CFMutableStringRef);
+    static QString fromCFString(CFStringRef);
 
     // constructors, copy constructors, and destructors ------------------------
 
diff --git a/WebCore/kwq/KWQString.mm b/WebCore/kwq/KWQString.mm
index 25733ef..812d6c2 100644
--- a/WebCore/kwq/KWQString.mm
+++ b/WebCore/kwq/KWQString.mm
@@ -144,6 +144,19 @@ QString QString::fromCFMutableString(CFMutableStringRef cfs)
     return qs;
 }
 
+QString QString::fromCFString(CFStringRef cfs)
+{
+    CFMutableStringRef ref;
+    QString qs;
+
+    ref = CFStringCreateMutableCopy(NULL, CFStringGetLength(cfs), cfs);
+    qs = QString::fromCFMutableString(ref);
+    CFRelease(ref);
+    
+    return qs;
+}
+
+
 // constructors, copy constructors, and destructors ----------------------------
 
 #ifndef _KWQ_QSTRING_INLINES_
diff --git a/WebCore/kwq/KWQTextCodec.mm b/WebCore/kwq/KWQTextCodec.mm
index d83c139..d95256f 100644
--- a/WebCore/kwq/KWQTextCodec.mm
+++ b/WebCore/kwq/KWQTextCodec.mm
@@ -27,12 +27,34 @@
 
 #include <qtextcodec.h>
 #include <kwqdebug.h>
+#include <KWQCharsets.h>
 
 // USING_BORROWED_QSTRING ======================================================
 #ifndef USING_BORROWED_QSTRING
 
-// FIXME: do we need this once we have a real implementation?
-static QTextCodec latin1TextCodec(kCFStringEncodingISOLatin1);
+static CFMutableDictionaryRef encodingToCodec = NULL;
+
+static QTextCodec *codecForCFStringEncoding(CFStringEncoding encoding)
+{
+    const void *value;
+    QTextCodec *codec;
+
+    if (encodingToCodec == NULL) {
+        encodingToCodec =  CFDictionaryCreateMutable(NULL, 0, NULL, NULL);
+    }
+    
+    if (CFDictionaryGetValueIfPresent(encodingToCodec, (void *)encoding, &value)) {
+        return (QTextCodec *)value;
+    } else {
+        codec = new QTextCodec(encoding);
+	CFDictionarySetValue(encodingToCodec, (void *)encoding, (void *)codec);
+	return codec;
+    }
+}
+
+
+
+
 
 // class QTextDecoder ==========================================================
 
@@ -60,25 +82,40 @@ QString QTextDecoder::toUnicode(const char *chs, int len)
 
 // static member functions -----------------------------------------------------
 
-QTextCodec *QTextCodec::codecForMib(int)
+QTextCodec *QTextCodec::codecForMib(int mib)
 {
-    // FIXME: need real implementation here
-    _logPartiallyImplemented();
-    return &latin1TextCodec;
+    CFStringEncoding encoding;
+
+    encoding = KWQCFStringEncodingFromMIB(mib);
+
+    if (encoding == kCFStringEncodingInvalidId) {
+        return NULL;
+    } else {
+        return codecForCFStringEncoding(encoding);
+    }
 }
 
-QTextCodec *QTextCodec::codecForName(const char *, int)
+
+QTextCodec *QTextCodec::codecForName(const char *name, int accuracy)
 {
-    // FIXME: need real implementation here
-    _logPartiallyImplemented();
-    return &latin1TextCodec;
+    CFStringRef cfname;
+    CFStringEncoding encoding;
+
+    cfname = CFStringCreateWithCString(NULL, name, kCFStringEncodingASCII);
+
+    encoding = KWQCFStringEncodingFromIANACharsetName(cfname);
+    CFRelease(cfname);
+
+    if (encoding == kCFStringEncodingInvalidId) {
+        return NULL;
+    } else {
+        return codecForCFStringEncoding(encoding);
+    }
 }
 
 QTextCodec *QTextCodec::codecForLocale()
 {
-    // FIXME: need real implementation here
-    _logPartiallyImplemented();
-    return &latin1TextCodec;
+    return codecForCFStringEncoding(CFStringGetSystemEncoding());
 }
 
 // constructors, copy constructors, and destructors ----------------------------
@@ -97,16 +134,12 @@ QTextCodec::~QTextCodec()
 
 const char* QTextCodec::name() const
 {
-    // FIXME: need real implementation here
-    _logNotYetImplemented();
-    return "\0";
+    return QString::fromCFString(KWQCFStringEncodingToIANACharsetName(encoding)).latin1();
 }
 
 int QTextCodec::mibEnum() const
 {
-    // FIXME: need real implementation here
-    _logNotYetImplemented();
-    return 0;
+  return KWQCFStringEncodingToMIB(encoding);
 }
 
 QTextDecoder *QTextCodec::makeDecoder() const
diff --git a/WebCore/kwq/Makefile.in b/WebCore/kwq/Makefile.in
index 38a248e..e9249c6 100644
--- a/WebCore/kwq/Makefile.in
+++ b/WebCore/kwq/Makefile.in
@@ -28,6 +28,7 @@ MMOBJECTS = \
     KWQButton.o \
     KWQCString.o \
     KWQChar.o \
+    KWQCharsets.o \
     KWQCheckBox.o \
     KWQColor.o \
     KWQColorGroup.o \
@@ -133,6 +134,7 @@ MMOBJECTS = \
 MOBJECTS = \
 	$(NULL)
 
+
 EXPORT_HEADERS = $(HEADERS)
 
 OBJECTS = $(MMOBJECTS) $(MOBJECTS)
@@ -200,6 +202,33 @@ $(LIBRARY): $(OBJECTS)
 	$(AR) $(ARFLAGS) $(LIBRARY) $(OBJECTS)
 	$(RANLIB) $(LIBRARY)
 
+make-mac-encodings: make-mac-encodings.o
+	$(CC) -o $@ $< $(LDFLAGS) -framework CoreFoundation
+
+mac-encodings.txt: make-mac-encodings
+	./make-mac-encodings $@
+
+KWQCharsetData.c: make-charset-table.pl character-sets.txt mac-encodings.txt
+	./make-charset-table.pl character-sets.txt mac-encodings.txt KWQCharsetData.c 
+
+KWQCharsets.o: KWQCharsetData.c
+
+CHARSET_FILES = make-mac-encodings \
+	 make-mac-encodings.o \
+	mac-encodings.txt \
+	KWQCharsetData.c \
+	$(NULL)
+
+KWQCharsets.o: KWQCharsetData.c
+
+#----------------------------------------------------------------------
+#
+
+CLEAN_FILES = $(OBJECTS) \
+	$(LIBRARY) \
+	$(CHARSET_FILES) \
+	$(NULL)
+
 #----------------------------------------------------------------------
 # include make rules boilerplate
 
diff --git a/WebCore/kwq/character-sets.txt b/WebCore/kwq/character-sets.txt
new file mode 100644
index 0000000..149bf70
--- /dev/null
+++ b/WebCore/kwq/character-sets.txt
@@ -0,0 +1,1752 @@
+
+===================================================================
+CHARACTER SETS
+
+(last updated 2001 August 23)
+
+These are the official names for character sets that may be used in
+the Internet and may be referred to in Internet documentation.  These
+names are expressed in ANSI_X3.4-1968 which is commonly called
+US-ASCII or simply ASCII.  The character set most commonly use in the
+Internet and used especially in protocol standards is US-ASCII, this
+is strongly encouraged.  The use of the name US-ASCII is also
+encouraged.
+
+The character set names may be up to 40 characters taken from the
+printable characters of US-ASCII.  However, no distinction is made
+between use of upper and lower case letters.
+
+The MIBenum value is a unique value for use in MIBs to identify coded
+character sets.
+
+The value space for MIBenum values has been divided into three
+regions. The first region (3-999) consists of coded character sets
+that have been standardized by some standard setting organization.
+This region is intended for standards that do not have subset
+implementations. The second region (1000-1999) is for the Unicode and
+ISO/IEC 10646 coded character sets together with a specification of a
+(set of) sub-repetoires that may occur.  The third region (>1999) is
+intended for vendor specific coded character sets.
+
+	Assigned MIB enum Numbers
+	-------------------------
+	0-2		Reserved
+	3-999		Set By Standards Organizations
+	1000-1999	Unicode / 10646
+	2000-2999	Vendor
+
+The aliases that start with "cs" have been added for use with the
+Printer MIB (see RFC 1759) and contain the standard numbers along with
+suggestive names in order to facilitate applications that want to
+display the names in user interfaces.  The "cs" stands for character
+set and is provided for applications that need a lower case first
+letter but want to use mixed case thereafter that cannot contain any
+special characters, such as underbar ("_") and dash ("-").  If the
+character set is from an ISO standard, its cs alias is the ISO
+standard number or name.  If the character set is not from an ISO
+standard, but is registered with ISO (ECMA is the current ISO
+Registration Authority), the ISO Registry number is specified as
+ISOnnn followed by letters suggestive of the name or standards number
+of the code set.  When a national or international standard is
+revised, the year of revision is added to the cs alias of the new
+character set entry in the IANA Registry in order to distinguish the
+revised character set from the original character set.
+
+
+Character Set                                               Reference
+-------------                                               ---------
+
+Name: ANSI_X3.4-1968                                   [RFC1345,KXS2]
+MIBenum: 3
+Source: ECMA registry
+Alias: iso-ir-6
+Alias: ANSI_X3.4-1986
+Alias: ISO_646.irv:1991
+Alias: ASCII
+Alias: ISO646-US
+Alias: US-ASCII (preferred MIME name)
+Alias: us
+Alias: IBM367
+Alias: cp367
+Alias: csASCII
+
+Name: ISO-10646-UTF-1
+MIBenum: 27
+Source: Universal Transfer Format (1), this is the multibyte
+        encoding, that subsets ASCII-7. It does not have byte
+        ordering issues.
+Alias: csISO10646UTF1
+
+Name: ISO_646.basic:1983                                [RFC1345,KXS2]
+MIBenum: 28
+Source: ECMA registry
+Alias: ref
+Alias: csISO646basic1983
+
+Name: INVARIANT                                         [RFC1345,KXS2]
+MIBenum: 29
+Alias: csINVARIANT
+
+Name: ISO_646.irv:1983                                  [RFC1345,KXS2]
+MIBenum: 30
+Source: ECMA registry
+Alias: iso-ir-2
+Alias: irv
+Alias: csISO2IntlRefVersion
+
+Name: BS_4730                                           [RFC1345,KXS2]
+MIBenum: 20
+Source: ECMA registry
+Alias: iso-ir-4
+Alias: ISO646-GB
+Alias: gb
+Alias: uk
+Alias: csISO4UnitedKingdom
+
+Name: NATS-SEFI                                         [RFC1345,KXS2]
+MIBenum: 31
+Source: ECMA registry
+Alias: iso-ir-8-1
+Alias: csNATSSEFI
+
+Name: NATS-SEFI-ADD                                     [RFC1345,KXS2]
+MIBenum: 32
+Source: ECMA registry
+Alias: iso-ir-8-2
+Alias: csNATSSEFIADD
+
+Name: NATS-DANO                                         [RFC1345,KXS2]
+MIBenum: 33
+Source: ECMA registry
+Alias: iso-ir-9-1
+Alias: csNATSDANO
+
+Name: NATS-DANO-ADD                                     [RFC1345,KXS2]
+MIBenum: 34
+Source: ECMA registry
+Alias: iso-ir-9-2
+Alias: csNATSDANOADD
+
+Name: SEN_850200_B                                      [RFC1345,KXS2]
+MIBenum: 35
+Source: ECMA registry
+Alias: iso-ir-10
+Alias: FI
+Alias: ISO646-FI
+Alias: ISO646-SE
+Alias: se
+Alias: csISO10Swedish
+
+Name: SEN_850200_C                                      [RFC1345,KXS2]
+MIBenum: 21
+Source: ECMA registry
+Alias: iso-ir-11
+Alias: ISO646-SE2
+Alias: se2
+Alias: csISO11SwedishForNames
+
+Name: KS_C_5601-1987                                    [RFC1345,KXS2]
+MIBenum: 36
+Source: ECMA registry
+Alias: iso-ir-149
+Alias: KS_C_5601-1989
+Alias: KSC_5601
+Alias: korean
+Alias: csKSC56011987
+
+Name: ISO-2022-KR  (preferred MIME name)                [RFC1557,Choi]
+MIBenum: 37
+Source: RFC-1557 (see also KS_C_5601-1987)
+Alias: csISO2022KR
+
+Name: EUC-KR  (preferred MIME name)                     [RFC1557,Choi]
+MIBenum: 38
+Source: RFC-1557 (see also KS_C_5861-1992)
+Alias: csEUCKR
+
+Name: ISO-2022-JP  (preferred MIME name)               [RFC1468,Murai]
+MIBenum: 39
+Source: RFC-1468 (see also RFC-2237)
+Alias: csISO2022JP
+
+Name: ISO-2022-JP-2  (preferred MIME name)              [RFC1554,Ohta]
+MIBenum: 40
+Source: RFC-1554
+Alias: csISO2022JP2
+
+Name: ISO-2022-CN                                            [RFC1922]
+MIBenum: 104
+Source: RFC-1922
+
+Name: ISO-2022-CN-EXT                                        [RFC1922]
+MIBenum: 105
+Source: RFC-1922
+
+Name: JIS_C6220-1969-jp                                 [RFC1345,KXS2]
+MIBenum: 41
+Source: ECMA registry
+Alias: JIS_C6220-1969
+Alias: iso-ir-13
+Alias: katakana
+Alias: x0201-7
+Alias: csISO13JISC6220jp
+
+Name: JIS_C6220-1969-ro                                 [RFC1345,KXS2]
+MIBenum: 42
+Source: ECMA registry
+Alias: iso-ir-14
+Alias: jp
+Alias: ISO646-JP
+Alias: csISO14JISC6220ro
+
+Name: IT                                                [RFC1345,KXS2]
+MIBenum: 22
+Source: ECMA registry
+Alias: iso-ir-15
+Alias: ISO646-IT
+Alias: csISO15Italian
+
+Name: PT                                                [RFC1345,KXS2]
+MIBenum: 43
+Source: ECMA registry
+Alias: iso-ir-16
+Alias: ISO646-PT
+Alias: csISO16Portuguese
+
+Name: ES                                                [RFC1345,KXS2]
+MIBenum: 23
+Source: ECMA registry
+Alias: iso-ir-17
+Alias: ISO646-ES
+Alias: csISO17Spanish
+
+Name: greek7-old                                        [RFC1345,KXS2]
+MIBenum: 44
+Source: ECMA registry
+Alias: iso-ir-18
+Alias: csISO18Greek7Old
+
+Name: latin-greek                                       [RFC1345,KXS2]
+MIBenum: 45
+Source: ECMA registry
+Alias: iso-ir-19
+Alias: csISO19LatinGreek
+
+Name: DIN_66003                                         [RFC1345,KXS2]
+MIBenum: 24
+Source: ECMA registry
+Alias: iso-ir-21
+Alias: de
+Alias: ISO646-DE
+Alias: csISO21German
+
+Name: NF_Z_62-010_(1973)                                [RFC1345,KXS2]
+MIBenum: 46
+Source: ECMA registry
+Alias: iso-ir-25
+Alias: ISO646-FR1
+Alias: csISO25French
+
+Name: Latin-greek-1                                     [RFC1345,KXS2]
+MIBenum: 47
+Source: ECMA registry
+Alias: iso-ir-27
+Alias: csISO27LatinGreek1
+
+Name: ISO_5427                                          [RFC1345,KXS2]
+MIBenum: 48
+Source: ECMA registry
+Alias: iso-ir-37
+Alias: csISO5427Cyrillic
+
+Name: JIS_C6226-1978                                    [RFC1345,KXS2]
+MIBenum: 49
+Source: ECMA registry
+Alias: iso-ir-42
+Alias: csISO42JISC62261978
+
+Name: BS_viewdata                                       [RFC1345,KXS2]
+MIBenum: 50
+Source: ECMA registry
+Alias: iso-ir-47
+Alias: csISO47BSViewdata
+
+Name: INIS                                              [RFC1345,KXS2]
+MIBenum: 51
+Source: ECMA registry
+Alias: iso-ir-49
+Alias: csISO49INIS
+
+Name: INIS-8                                            [RFC1345,KXS2]
+MIBenum: 52
+Source: ECMA registry
+Alias: iso-ir-50
+Alias: csISO50INIS8
+
+Name: INIS-cyrillic                                     [RFC1345,KXS2]
+MIBenum: 53
+Source: ECMA registry
+Alias: iso-ir-51
+Alias: csISO51INISCyrillic
+
+Name: ISO_5427:1981                                     [RFC1345,KXS2]
+MIBenum: 54
+Source: ECMA registry
+Alias: iso-ir-54
+Alias: ISO5427Cyrillic1981
+
+Name: ISO_5428:1980                                     [RFC1345,KXS2]
+MIBenum: 55
+Source: ECMA registry
+Alias: iso-ir-55
+Alias: csISO5428Greek
+
+Name: GB_1988-80                                        [RFC1345,KXS2]
+MIBenum: 56
+Source: ECMA registry
+Alias: iso-ir-57
+Alias: cn
+Alias: ISO646-CN
+Alias: csISO57GB1988
+
+Name: GB_2312-80                                        [RFC1345,KXS2]
+MIBenum: 57
+Source: ECMA registry
+Alias: iso-ir-58
+Alias: chinese
+Alias: csISO58GB231280
+
+Name: NS_4551-1                                         [RFC1345,KXS2]
+MIBenum: 25
+Source: ECMA registry
+Alias: iso-ir-60
+Alias: ISO646-NO
+Alias: no
+Alias: csISO60DanishNorwegian
+Alias: csISO60Norwegian1
+
+Name: NS_4551-2                                          [RFC1345,KXS2]
+MIBenum: 58
+Source: ECMA registry
+Alias: ISO646-NO2
+Alias: iso-ir-61
+Alias: no2
+Alias: csISO61Norwegian2
+
+Name: NF_Z_62-010                                        [RFC1345,KXS2]
+MIBenum: 26
+Source: ECMA registry
+Alias: iso-ir-69
+Alias: ISO646-FR
+Alias: fr
+Alias: csISO69French
+
+Name: videotex-suppl                                     [RFC1345,KXS2]
+MIBenum: 59
+Source: ECMA registry
+Alias: iso-ir-70
+Alias: csISO70VideotexSupp1
+
+Name: PT2                                                [RFC1345,KXS2]
+MIBenum: 60
+Source: ECMA registry
+Alias: iso-ir-84
+Alias: ISO646-PT2
+Alias: csISO84Portuguese2
+
+Name: ES2                                                [RFC1345,KXS2]
+MIBenum: 61
+Source: ECMA registry
+Alias: iso-ir-85
+Alias: ISO646-ES2
+Alias: csISO85Spanish2
+
+Name: MSZ_7795.3                                         [RFC1345,KXS2]
+MIBenum: 62
+Source: ECMA registry
+Alias: iso-ir-86
+Alias: ISO646-HU
+Alias: hu
+Alias: csISO86Hungarian
+
+Name: JIS_C6226-1983                                     [RFC1345,KXS2]
+MIBenum: 63
+Source: ECMA registry
+Alias: iso-ir-87
+Alias: x0208
+Alias: JIS_X0208-1983
+Alias: csISO87JISX0208
+
+Name: greek7                                             [RFC1345,KXS2]
+MIBenum: 64
+Source: ECMA registry
+Alias: iso-ir-88
+Alias: csISO88Greek7
+
+Name: ASMO_449                                           [RFC1345,KXS2]
+MIBenum: 65
+Source: ECMA registry
+Alias: ISO_9036
+Alias: arabic7
+Alias: iso-ir-89
+Alias: csISO89ASMO449
+
+Name: iso-ir-90                                          [RFC1345,KXS2]
+MIBenum: 66
+Source: ECMA registry
+Alias: csISO90
+
+Name: JIS_C6229-1984-a                                   [RFC1345,KXS2]
+MIBenum: 67
+Source: ECMA registry
+Alias: iso-ir-91
+Alias: jp-ocr-a
+Alias: csISO91JISC62291984a
+
+Name: JIS_C6229-1984-b                                   [RFC1345,KXS2]
+MIBenum: 68
+Source: ECMA registry
+Alias: iso-ir-92
+Alias: ISO646-JP-OCR-B
+Alias: jp-ocr-b
+Alias: csISO92JISC62991984b
+
+Name: JIS_C6229-1984-b-add                               [RFC1345,KXS2]
+MIBenum: 69
+Source: ECMA registry
+Alias: iso-ir-93
+Alias: jp-ocr-b-add
+Alias: csISO93JIS62291984badd
+
+Name: JIS_C6229-1984-hand                                [RFC1345,KXS2]
+MIBenum: 70
+Source: ECMA registry
+Alias: iso-ir-94
+Alias: jp-ocr-hand
+Alias: csISO94JIS62291984hand
+
+Name: JIS_C6229-1984-hand-add                            [RFC1345,KXS2]
+MIBenum: 71
+Source: ECMA registry
+Alias: iso-ir-95
+Alias: jp-ocr-hand-add
+Alias: csISO95JIS62291984handadd
+
+Name: JIS_C6229-1984-kana                                [RFC1345,KXS2]
+MIBenum: 72
+Source: ECMA registry
+Alias: iso-ir-96
+Alias: csISO96JISC62291984kana
+
+Name: ISO_2033-1983                                      [RFC1345,KXS2]
+MIBenum: 73
+Source: ECMA registry
+Alias: iso-ir-98
+Alias: e13b
+Alias: csISO2033
+
+Name: ANSI_X3.110-1983                                   [RFC1345,KXS2]
+MIBenum: 74
+Source: ECMA registry
+Alias: iso-ir-99
+Alias: CSA_T500-1983
+Alias: NAPLPS
+Alias: csISO99NAPLPS
+
+Name: ISO_8859-1:1987                                    [RFC1345,KXS2]
+MIBenum: 4
+Source: ECMA registry
+Alias: iso-ir-100
+Alias: ISO_8859-1
+Alias: ISO-8859-1 (preferred MIME name)
+Alias: latin1
+Alias: l1
+Alias: IBM819
+Alias: CP819
+Alias: csISOLatin1
+
+Name: ISO_8859-2:1987                                    [RFC1345,KXS2]
+MIBenum: 5
+Source: ECMA registry
+Alias: iso-ir-101
+Alias: ISO_8859-2
+Alias: ISO-8859-2 (preferred MIME name)
+Alias: latin2
+Alias: l2
+Alias: csISOLatin2
+
+Name: T.61-7bit                                          [RFC1345,KXS2]
+MIBenum: 75
+Source: ECMA registry
+Alias: iso-ir-102
+Alias: csISO102T617bit
+
+Name: T.61-8bit                                          [RFC1345,KXS2]
+MIBenum: 76
+Alias: T.61
+Source: ECMA registry
+Alias: iso-ir-103
+Alias: csISO103T618bit
+
+Name: ISO_8859-3:1988                                    [RFC1345,KXS2]
+MIBenum: 6
+Source: ECMA registry
+Alias: iso-ir-109
+Alias: ISO_8859-3
+Alias: ISO-8859-3 (preferred MIME name)
+Alias: latin3
+Alias: l3
+Alias: csISOLatin3
+
+Name: ISO_8859-4:1988                                    [RFC1345,KXS2]
+MIBenum: 7
+Source: ECMA registry
+Alias: iso-ir-110
+Alias: ISO_8859-4
+Alias: ISO-8859-4 (preferred MIME name)
+Alias: latin4
+Alias: l4
+Alias: csISOLatin4
+
+Name: ECMA-cyrillic                                      [RFC1345,KXS2]
+MIBenum: 77
+Source: ECMA registry
+Alias: iso-ir-111
+Alias: csISO111ECMACyrillic
+
+Name: CSA_Z243.4-1985-1                                  [RFC1345,KXS2]
+MIBenum: 78
+Source: ECMA registry
+Alias: iso-ir-121
+Alias: ISO646-CA
+Alias: csa7-1
+Alias: ca
+Alias: csISO121Canadian1
+
+Name: CSA_Z243.4-1985-2                                  [RFC1345,KXS2]
+MIBenum: 79
+Source: ECMA registry
+Alias: iso-ir-122
+Alias: ISO646-CA2
+Alias: csa7-2
+Alias: csISO122Canadian2
+
+Name: CSA_Z243.4-1985-gr                                 [RFC1345,KXS2]
+MIBenum: 80
+Source: ECMA registry
+Alias: iso-ir-123
+Alias: csISO123CSAZ24341985gr
+
+Name: ISO_8859-6:1987                                    [RFC1345,KXS2]
+MIBenum: 9
+Source: ECMA registry
+Alias: iso-ir-127
+Alias: ISO_8859-6
+Alias: ISO-8859-6 (preferred MIME name)
+Alias: ECMA-114
+Alias: ASMO-708
+Alias: arabic
+Alias: csISOLatinArabic
+
+Name: ISO_8859-6-E                                       [RFC1556,IANA]
+MIBenum: 81
+Source: RFC1556
+Alias: csISO88596E
+Alias: ISO-8859-6-E (preferred MIME name)
+
+Name: ISO_8859-6-I                                       [RFC1556,IANA]
+MIBenum: 82
+Source: RFC1556
+Alias: csISO88596I
+Alias: ISO-8859-6-I (preferred MIME name)
+
+Name: ISO_8859-7:1987                            [RFC1947,RFC1345,KXS2]
+MIBenum: 10
+Source: ECMA registry
+Alias: iso-ir-126
+Alias: ISO_8859-7
+Alias: ISO-8859-7 (preferred MIME name)
+Alias: ELOT_928
+Alias: ECMA-118
+Alias: greek
+Alias: greek8
+Alias: csISOLatinGreek
+
+Name: T.101-G2                                            [RFC1345,KXS2]
+MIBenum: 83
+Source: ECMA registry
+Alias: iso-ir-128
+Alias: csISO128T101G2
+
+Name: ISO_8859-8:1988                                     [RFC1345,KXS2]
+MIBenum: 11
+Source: ECMA registry
+Alias: iso-ir-138
+Alias: ISO_8859-8
+Alias: ISO-8859-8 (preferred MIME name)
+Alias: hebrew
+Alias: csISOLatinHebrew
+
+Name: ISO_8859-8-E                                  [RFC1556,Nussbacher]
+MIBenum: 84
+Source: RFC1556
+Alias: csISO88598E
+Alias: ISO-8859-8-E (preferred MIME name)
+
+Name: ISO_8859-8-I                                  [RFC1556,Nussbacher]
+MIBenum: 85
+Source: RFC1556
+Alias: csISO88598I
+Alias: ISO-8859-8-I (preferred MIME name)
+
+Name: CSN_369103                                          [RFC1345,KXS2]
+MIBenum: 86
+Source: ECMA registry
+Alias: iso-ir-139
+Alias: csISO139CSN369103
+
+Name: JUS_I.B1.002                                        [RFC1345,KXS2]
+MIBenum: 87
+Source: ECMA registry
+Alias: iso-ir-141
+Alias: ISO646-YU
+Alias: js
+Alias: yu
+Alias: csISO141JUSIB1002
+
+Name: ISO_6937-2-add                                      [RFC1345,KXS2]
+MIBenum: 14
+Source: ECMA registry and ISO 6937-2:1983
+Alias: iso-ir-142
+Alias: csISOTextComm
+
+Name: IEC_P27-1                                           [RFC1345,KXS2]
+MIBenum: 88
+Source: ECMA registry
+Alias: iso-ir-143
+Alias: csISO143IECP271
+
+Name: ISO_8859-5:1988                                     [RFC1345,KXS2]
+MIBenum: 8
+Source: ECMA registry
+Alias: iso-ir-144
+Alias: ISO_8859-5
+Alias: ISO-8859-5 (preferred MIME name)
+Alias: cyrillic
+Alias: csISOLatinCyrillic
+
+Name: JUS_I.B1.003-serb                                   [RFC1345,KXS2]
+MIBenum: 89
+Source: ECMA registry
+Alias: iso-ir-146
+Alias: serbian
+Alias: csISO146Serbian
+
+Name: JUS_I.B1.003-mac                                    [RFC1345,KXS2]
+MIBenum: 90
+Source: ECMA registry
+Alias: macedonian
+Alias: iso-ir-147
+Alias: csISO147Macedonian
+
+Name: ISO_8859-9:1989                                     [RFC1345,KXS2]
+MIBenum: 12
+Source: ECMA registry
+Alias: iso-ir-148
+Alias: ISO_8859-9
+Alias: ISO-8859-9 (preferred MIME name)
+Alias: latin5
+Alias: l5
+Alias: csISOLatin5
+
+Name: greek-ccitt                                         [RFC1345,KXS2]
+MIBenum: 91
+Source: ECMA registry
+Alias: iso-ir-150
+Alias: csISO150
+Alias: csISO150GreekCCITT
+
+Name: NC_NC00-10:81                                       [RFC1345,KXS2]
+MIBenum: 92
+Source: ECMA registry
+Alias: cuba
+Alias: iso-ir-151
+Alias: ISO646-CU
+Alias: csISO151Cuba
+
+Name: ISO_6937-2-25                                       [RFC1345,KXS2]
+MIBenum: 93
+Source: ECMA registry
+Alias: iso-ir-152
+Alias: csISO6937Add
+
+Name: GOST_19768-74                                       [RFC1345,KXS2]
+MIBenum: 94
+Source: ECMA registry
+Alias: ST_SEV_358-88
+Alias: iso-ir-153
+Alias: csISO153GOST1976874
+
+Name: ISO_8859-supp                                       [RFC1345,KXS2]
+MIBenum: 95
+Source: ECMA registry
+Alias: iso-ir-154
+Alias: latin1-2-5
+Alias: csISO8859Supp
+
+Name: ISO_10367-box                                       [RFC1345,KXS2]
+MIBenum: 96
+Source: ECMA registry
+Alias: iso-ir-155
+Alias: csISO10367Box
+
+Name: ISO-8859-10 (preferred MIME name)			  [RFC1345,KXS2]
+MIBenum: 13
+Source: ECMA registry
+Alias: iso-ir-157
+Alias: l6
+Alias: ISO_8859-10:1992
+Alias: csISOLatin6
+Alias: latin6
+
+Name: latin-lap                                           [RFC1345,KXS2]
+MIBenum: 97
+Source: ECMA registry
+Alias: lap
+Alias: iso-ir-158
+Alias: csISO158Lap
+
+Name: JIS_X0212-1990                                      [RFC1345,KXS2]
+MIBenum: 98
+Source: ECMA registry
+Alias: x0212
+Alias: iso-ir-159
+Alias: csISO159JISX02121990
+
+Name: DS_2089                                             [RFC1345,KXS2]
+MIBenum: 99
+Source: Danish Standard, DS 2089, February 1974
+Alias: DS2089
+Alias: ISO646-DK
+Alias: dk
+Alias: csISO646Danish
+
+Name: us-dk                                               [RFC1345,KXS2]
+MIBenum: 100
+Alias: csUSDK
+
+Name: dk-us                                               [RFC1345,KXS2]
+MIBenum: 101
+Alias: csDKUS
+
+Name: JIS_X0201                                           [RFC1345,KXS2]
+MIBenum: 15
+Source: JIS X 0201-1976.   One byte only, this is equivalent to 
+        JIS/Roman (similar to ASCII) plus eight-bit half-width 
+        Katakana
+Alias: X0201
+Alias: csHalfWidthKatakana
+
+Name: KSC5636                                             [RFC1345,KXS2]
+MIBenum: 102
+Alias: ISO646-KR
+Alias: csKSC5636
+
+Name: ISO-10646-UCS-2
+MIBenum: 1000
+Source: the 2-octet Basic Multilingual Plane, aka Unicode
+        this needs to specify network byte order: the standard
+        does not specify (it is a 16-bit integer space)
+Alias: csUnicode
+
+Name: ISO-10646-UCS-4
+MIBenum: 1001
+Source: the full code space. (same comment about byte order,
+        these are 31-bit numbers.
+Alias: csUCS4
+
+Name: DEC-MCS                                             [RFC1345,KXS2]
+MIBenum: 2008
+Source: VAX/VMS User's Manual, 
+        Order Number: AI-Y517A-TE, April 1986.
+Alias: dec
+Alias: csDECMCS
+
+Name: hp-roman8                                  [HP-PCL5,RFC1345,KXS2]
+MIBenum: 2004
+Source: LaserJet IIP Printer User's Manual, 
+        HP part no 33471-90901, Hewlet-Packard, June 1989.
+Alias: roman8
+Alias: r8
+Alias: csHPRoman8
+
+Name: macintosh                                           [RFC1345,KXS2]
+MIBenum: 2027
+Source: The Unicode Standard ver1.0, ISBN 0-201-56788-1, Oct 1991
+Alias: mac
+Alias: csMacintosh
+
+Name: IBM037                                              [RFC1345,KXS2]
+MIBenum: 2028
+Source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+Alias: cp037
+Alias: ebcdic-cp-us
+Alias: ebcdic-cp-ca
+Alias: ebcdic-cp-wt
+Alias: ebcdic-cp-nl
+Alias: csIBM037
+
+Name: IBM038                                              [RFC1345,KXS2]
+MIBenum: 2029
+Source: IBM 3174 Character Set Ref, GA27-3831-02, March 1990
+Alias: EBCDIC-INT
+Alias: cp038
+Alias: csIBM038
+
+Name: IBM273                                              [RFC1345,KXS2]
+MIBenum: 2030
+Source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+Alias: CP273
+Alias: csIBM273
+
+Name: IBM274                                              [RFC1345,KXS2]
+MIBenum: 2031
+Source: IBM 3174 Character Set Ref, GA27-3831-02, March 1990
+Alias: EBCDIC-BE
+Alias: CP274
+Alias: csIBM274
+
+Name: IBM275                                              [RFC1345,KXS2]
+MIBenum: 2032
+Source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+Alias: EBCDIC-BR
+Alias: cp275
+Alias: csIBM275
+
+Name: IBM277                                              [RFC1345,KXS2]
+MIBenum: 2033
+Source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+Alias: EBCDIC-CP-DK
+Alias: EBCDIC-CP-NO
+Alias: csIBM277
+
+Name: IBM278                                              [RFC1345,KXS2]
+MIBenum: 2034
+Source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+Alias: CP278
+Alias: ebcdic-cp-fi
+Alias: ebcdic-cp-se
+Alias: csIBM278
+
+Name: IBM280                                              [RFC1345,KXS2]
+MIBenum: 2035
+Source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+Alias: CP280
+Alias: ebcdic-cp-it
+Alias: csIBM280
+
+Name: IBM281                                              [RFC1345,KXS2]
+MIBenum: 2036
+Source: IBM 3174 Character Set Ref, GA27-3831-02, March 1990
+Alias: EBCDIC-JP-E
+Alias: cp281
+Alias: csIBM281
+
+Name: IBM284                                              [RFC1345,KXS2]
+MIBenum: 2037
+Source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+Alias: CP284
+Alias: ebcdic-cp-es
+Alias: csIBM284
+
+Name: IBM285                                              [RFC1345,KXS2]
+MIBenum: 2038
+Source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+Alias: CP285
+Alias: ebcdic-cp-gb
+Alias: csIBM285
+
+Name: IBM290                                              [RFC1345,KXS2]
+MIBenum: 2039
+Source: IBM 3174 Character Set Ref, GA27-3831-02, March 1990
+Alias: cp290
+Alias: EBCDIC-JP-kana
+Alias: csIBM290
+
+Name: IBM297                                              [RFC1345,KXS2]
+MIBenum: 2040
+Source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+Alias: cp297
+Alias: ebcdic-cp-fr
+Alias: csIBM297
+
+Name: IBM420                                              [RFC1345,KXS2]
+MIBenum: 2041
+Source: IBM NLS RM Vol2 SE09-8002-01, March 1990, 
+        IBM NLS RM p 11-11
+Alias: cp420
+Alias: ebcdic-cp-ar1
+Alias: csIBM420
+
+Name: IBM423                                              [RFC1345,KXS2]
+MIBenum: 2042
+Source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+Alias: cp423
+Alias: ebcdic-cp-gr
+Alias: csIBM423
+
+Name: IBM424                                              [RFC1345,KXS2]
+MIBenum: 2043
+Source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+Alias: cp424
+Alias: ebcdic-cp-he
+Alias: csIBM424
+
+Name: IBM437                                              [RFC1345,KXS2]
+MIBenum: 2011
+Source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+Alias: cp437
+Alias: 437
+Alias: csPC8CodePage437
+
+Name: IBM500                                              [RFC1345,KXS2]
+MIBenum: 2044
+Source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+Alias: CP500
+Alias: ebcdic-cp-be
+Alias: ebcdic-cp-ch
+Alias: csIBM500
+
+Name: IBM775                                                   [HP-PCL5]
+MIBenum: 2087
+Source: HP PCL 5 Comparison Guide (P/N 5021-0329) pp B-13, 1996
+Alias: cp775
+Alias: csPC775Baltic
+
+Name: IBM850                                              [RFC1345,KXS2]
+MIBenum: 2009
+Source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+Alias: cp850
+Alias: 850
+Alias: csPC850Multilingual
+
+Name: IBM851                                              [RFC1345,KXS2]
+MIBenum: 2045
+Source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+Alias: cp851
+Alias: 851
+Alias: csIBM851
+
+Name: IBM852                                              [RFC1345,KXS2]
+MIBenum: 2010
+Source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+Alias: cp852
+Alias: 852
+Alias: csPCp852
+
+Name: IBM855                                              [RFC1345,KXS2]
+MIBenum: 2046
+Source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+Alias: cp855
+Alias: 855
+Alias: csIBM855
+
+Name: IBM857                                              [RFC1345,KXS2]
+MIBenum: 2047
+Source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+Alias: cp857
+Alias: 857
+Alias: csIBM857
+
+Name: IBM860                                              [RFC1345,KXS2]
+MIBenum: 2048
+Source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+Alias: cp860
+Alias: 860
+Alias: csIBM860
+
+Name: IBM861                                              [RFC1345,KXS2]
+MIBenum: 2049
+Source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+Alias: cp861
+Alias: 861
+Alias: cp-is
+Alias: csIBM861
+
+Name: IBM862                                              [RFC1345,KXS2]
+MIBenum: 2013
+Source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+Alias: cp862
+Alias: 862
+Alias: csPC862LatinHebrew
+
+Name: IBM863                                              [RFC1345,KXS2]
+MIBenum: 2050
+Source: IBM Keyboard layouts and code pages, PN 07G4586 June 1991
+Alias: cp863
+Alias: 863
+Alias: csIBM863
+
+Name: IBM864                                              [RFC1345,KXS2]
+MIBenum: 2051
+Source: IBM Keyboard layouts and code pages, PN 07G4586 June 1991
+Alias: cp864
+Alias: csIBM864
+
+Name: IBM865                                              [RFC1345,KXS2]
+MIBenum: 2052
+Source: IBM DOS 3.3 Ref (Abridged), 94X9575 (Feb 1987)
+Alias: cp865
+Alias: 865
+Alias: csIBM865
+
+Name: IBM866                                                     [Pond]
+MIBenum: 2086
+Source: IBM NLDG Volume 2 (SE09-8002-03) August 1994
+Alias: cp866
+Alias: 866
+Alias: csIBM866
+
+Name: IBM868                                              [RFC1345,KXS2]
+MIBenum: 2053
+Source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+Alias: CP868
+Alias: cp-ar
+Alias: csIBM868
+
+Name: IBM869                                              [RFC1345,KXS2]
+MIBenum: 2054
+Source: IBM Keyboard layouts and code pages, PN 07G4586 June 1991
+Alias: cp869
+Alias: 869
+Alias: cp-gr
+Alias: csIBM869
+
+Name: IBM870                                              [RFC1345,KXS2]
+MIBenum: 2055
+Source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+Alias: CP870
+Alias: ebcdic-cp-roece
+Alias: ebcdic-cp-yu
+Alias: csIBM870
+
+Name: IBM871                                              [RFC1345,KXS2]
+MIBenum: 2056
+Source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+Alias: CP871
+Alias: ebcdic-cp-is
+Alias: csIBM871
+
+Name: IBM880                                              [RFC1345,KXS2]
+MIBenum: 2057
+Source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+Alias: cp880
+Alias: EBCDIC-Cyrillic
+Alias: csIBM880
+
+Name: IBM891                                              [RFC1345,KXS2]
+MIBenum: 2058
+Source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+Alias: cp891
+Alias: csIBM891
+
+Name: IBM903                                              [RFC1345,KXS2]
+MIBenum: 2059
+Source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+Alias: cp903
+Alias: csIBM903
+
+Name: IBM904                                              [RFC1345,KXS2]
+MIBenum: 2060
+Source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+Alias: cp904
+Alias: 904
+Alias: csIBBM904
+
+Name: IBM905                                              [RFC1345,KXS2]
+MIBenum: 2061
+Source: IBM 3174 Character Set Ref, GA27-3831-02, March 1990
+Alias: CP905
+Alias: ebcdic-cp-tr
+Alias: csIBM905
+
+Name: IBM918                                              [RFC1345,KXS2]
+MIBenum: 2062
+Source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+Alias: CP918
+Alias: ebcdic-cp-ar2
+Alias: csIBM918
+
+Name: IBM1026                                             [RFC1345,KXS2]
+MIBenum: 2063
+Source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+Alias: CP1026
+Alias: csIBM1026
+
+Name: EBCDIC-AT-DE                                        [RFC1345,KXS2]
+MIBenum: 2064
+Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
+Alias: csIBMEBCDICATDE
+
+Name: EBCDIC-AT-DE-A                                      [RFC1345,KXS2]
+MIBenum: 2065 
+Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 
+Alias: csEBCDICATDEA
+
+Name: EBCDIC-CA-FR                                        [RFC1345,KXS2]
+MIBenum: 2066
+Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
+Alias: csEBCDICCAFR
+
+Name: EBCDIC-DK-NO                                        [RFC1345,KXS2]
+MIBenum: 2067
+Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
+Alias: csEBCDICDKNO
+
+Name: EBCDIC-DK-NO-A                                      [RFC1345,KXS2]
+MIBenum: 2068
+Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
+Alias: csEBCDICDKNOA
+
+Name: EBCDIC-FI-SE                                        [RFC1345,KXS2]
+MIBenum: 2069
+Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
+Alias: csEBCDICFISE
+
+Name: EBCDIC-FI-SE-A                                      [RFC1345,KXS2]
+MIBenum: 2070
+Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
+Alias: csEBCDICFISEA
+
+Name: EBCDIC-FR                                           [RFC1345,KXS2]
+MIBenum: 2071
+Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
+Alias: csEBCDICFR
+
+Name: EBCDIC-IT                                           [RFC1345,KXS2]
+MIBenum: 2072
+Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
+Alias: csEBCDICIT
+
+Name: EBCDIC-PT                                           [RFC1345,KXS2]
+MIBenum: 2073
+Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
+Alias: csEBCDICPT
+
+Name: EBCDIC-ES                                           [RFC1345,KXS2]
+MIBenum: 2074
+Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
+Alias: csEBCDICES
+
+Name: EBCDIC-ES-A                                         [RFC1345,KXS2]
+MIBenum: 2075
+Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
+Alias: csEBCDICESA
+
+Name: EBCDIC-ES-S                                         [RFC1345,KXS2]
+MIBenum: 2076
+Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
+Alias: csEBCDICESS
+
+Name: EBCDIC-UK                                           [RFC1345,KXS2]
+MIBenum: 2077
+Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
+Alias: csEBCDICUK
+
+Name: EBCDIC-US                                           [RFC1345,KXS2]
+MIBenum: 2078
+Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
+Alias: csEBCDICUS
+
+Name: UNKNOWN-8BIT                                             [RFC1428]
+MIBenum: 2079
+Alias: csUnknown8BiT
+
+Name: MNEMONIC                                            [RFC1345,KXS2]
+MIBenum: 2080
+Source: RFC 1345, also known as "mnemonic+ascii+38"
+Alias: csMnemonic
+
+Name: MNEM                                                [RFC1345,KXS2]
+MIBenum: 2081
+Source: RFC 1345, also known as "mnemonic+ascii+8200"
+Alias: csMnem
+
+Name: VISCII                                                   [RFC1456]
+MIBenum: 2082
+Source: RFC 1456
+Alias: csVISCII
+
+Name: VIQR                                                     [RFC1456]
+MIBenum: 2083
+Source: RFC 1456
+Alias: csVIQR
+
+Name: KOI8-R  (preferred MIME name)                            [RFC1489]
+MIBenum: 2084
+Source: RFC 1489, based on GOST-19768-74, ISO-6937/8, 
+        INIS-Cyrillic, ISO-5427.
+Alias: csKOI8R
+
+Name: KOI8-U                                                   [RFC2319]
+MIBenum: 2088
+Source: RFC 2319
+
+Name: IBM00858
+MIBenum: 2089
+Source: IBM See (.../assignments/character-set-info/IBM00858)    [Mahdi]
+Alias: CCSID00858
+Alias: CP00858
+Alias: PC-Multilingual-850+euro
+
+Name: IBM00924
+MIBenum: 2090
+Source: IBM See (.../assignments/character-set-info/IBM00924)    [Mahdi]
+Alias: CCSID00924
+Alias: CP00924
+Alias: ebcdic-Latin9--euro
+
+Name: IBM01140
+MIBenum: 2091
+Source: IBM See (.../assignments/character-set-info/IBM01140)    [Mahdi]
+Alias: CCSID01140
+Alias: CP01140
+Alias: ebcdic-us-37+euro
+
+Name: IBM01141
+MIBenum: 2092
+Source: IBM See (.../assignments/character-set-info/IBM01141)    [Mahdi]
+Alias: CCSID01141
+Alias: CP01141
+Alias: ebcdic-de-273+euro
+
+Name: IBM01142
+MIBenum: 2093
+Source: IBM See (.../assignments/character-set-info/IBM01142)    [Mahdi]
+Alias: CCSID01142
+Alias: CP01142
+Alias: ebcdic-dk-277+euro
+Alias: ebcdic-no-277+euro
+
+Name: IBM01143
+MIBenum: 2094
+Source: IBM See (.../assignments/character-set-info/IBM01143)    [Mahdi]
+Alias: CCSID01143
+Alias: CP01143
+Alias: ebcdic-fi-278+euro
+Alias: ebcdic-se-278+euro
+
+Name: IBM01144
+MIBenum: 2095
+Source: IBM See (.../assignments/character-set-info/IBM01144)    [Mahdi]
+Alias: CCSID01144
+Alias: CP01144
+Alias: ebcdic-it-280+euro
+
+Name: IBM01145
+MIBenum: 2096
+Source: IBM See (.../assignments/character-set-info/IBM01145)    [Mahdi]
+Alias: CCSID01145
+Alias: CP01145
+Alias: ebcdic-es-284+euro
+
+Name: IBM01146
+MIBenum: 2097
+Source: IBM See (.../assignments/character-set-info/IBM01146)    [Mahdi]
+Alias: CCSID01146
+Alias: CP01146
+Alias: ebcdic-gb-285+euro
+
+Name: IBM01147
+MIBenum: 2098
+Source: IBM See (.../assignments/character-set-info/IBM01147)    [Mahdi]
+Alias: CCSID01147
+Alias: CP01147
+Alias: ebcdic-fr-297+euro
+
+Name: IBM01148
+MIBenum: 2099
+Source: IBM See (.../assignments/character-set-info/IBM01148)    [Mahdi]
+Alias: CCSID01148
+Alias: CP01148
+Alias: ebcdic-international-500+euro
+
+Name: IBM01149
+MIBenum: 2100
+Source: IBM See (.../assignments/character-set-info/IBM01149)    [Mahdi]
+Alias: CCSID01149
+Alias: CP01149
+Alias: ebcdic-is-871+euro
+
+Name: Big5-HKSCS
+MIBenum: 2101
+Source:   See (.../assignments/character-set-info/Big5-HKSCS)     [Yick]
+Alias: None
+
+Name: UNICODE-1-1                                              [RFC1641]
+MIBenum: 1010
+Source: RFC 1641
+Alias: csUnicode11
+
+Name: SCSU
+MIBenum: 1011
+Source: SCSU See (.../assignments/character-set-info/SCSU)     [Scherer]
+Alias: None 
+
+Name: UTF-7                                                    [RFC2152]
+MIBenum: 1012
+Source: RFC 2152
+Alias: None
+
+Name: UTF-16BE                                                 [RFC2781]
+MIBenum: 1013
+Source: RFC 2781
+Alias: None
+
+Name: UTF-16LE                                                 [RFC2781]
+MIBenum: 1014
+Source: RFC 2781
+Alias: None
+
+Name: UTF-16                                                   [RFC2781]
+MIBenum: 1015
+Source: RFC 2781
+Alias: None
+
+Name: UNICODE-1-1-UTF-7                                        [RFC1642]
+MIBenum: 103
+Source: RFC 1642
+Alias: csUnicode11UTF7
+
+Name: UTF-8                                                    [RFC2279]
+MIBenum: 106
+Source: RFC 2279
+Alias: None 
+
+Name: ISO-8859-13
+MIBenum: 109
+Source: ISO See (...assignments/character-set-info/iso-8859-13)[Tumasonis] 
+Alias: None
+
+Name: ISO-8859-14
+MIBenum: 110
+Source: ISO See (...assignments/character-set-info/iso-8859-14) [Simonsen]
+Alias: iso-ir-199
+Alias: ISO_8859-14:1998
+Alias: ISO_8859-14
+Alias: latin8
+Alias: iso-celtic
+Alias: l8
+
+Name: ISO-8859-15
+MIBenum: 111
+Source: ISO
+Alias: ISO_8859-15
+
+Name: ISO-8859-16
+MIBenum: 112
+Source: ISO
+Alias: 
+
+Name: JIS_Encoding
+MIBenum: 16
+Source: JIS X 0202-1991.  Uses ISO 2022 escape sequences to
+        shift code sets as documented in JIS X 0202-1991.
+Alias: csJISEncoding
+
+Name: Shift_JIS  (preferred MIME name)
+MIBenum: 17
+Source: This charset is an extension of csHalfWidthKatakana by
+        adding graphic characters in JIS X 0208.  The CCS's are
+        JIS X0201:1997 and JIS X0208:1997.  The
+        complete definition is shown in Appendix 1 of JIS
+        X0208:1997.
+        This charset can be used for the top-level media type "text".
+Alias: MS_Kanji 
+Alias: csShiftJIS
+
+Name: Extended_UNIX_Code_Packed_Format_for_Japanese
+MIBenum: 18
+Source: Standardized by OSF, UNIX International, and UNIX Systems
+        Laboratories Pacific.  Uses ISO 2022 rules to select
+               code set 0: US-ASCII (a single 7-bit byte set)
+               code set 1: JIS X0208-1990 (a double 8-bit byte set)
+                           restricted to A0-FF in both bytes
+               code set 2: Half Width Katakana (a single 7-bit byte set)
+                           requiring SS2 as the character prefix
+               code set 3: JIS X0212-1990 (a double 7-bit byte set)
+                           restricted to A0-FF in both bytes
+                           requiring SS3 as the character prefix
+Alias: csEUCPkdFmtJapanese
+Alias: EUC-JP  (preferred MIME name)
+
+Name: Extended_UNIX_Code_Fixed_Width_for_Japanese
+MIBenum: 19
+Source: Used in Japan.  Each character is 2 octets.
+                code set 0: US-ASCII (a single 7-bit byte set)
+                              1st byte = 00
+                              2nd byte = 20-7E
+                code set 1: JIS X0208-1990 (a double 7-bit byte set)
+                            restricted  to A0-FF in both bytes 
+                code set 2: Half Width Katakana (a single 7-bit byte set)
+                              1st byte = 00
+                              2nd byte = A0-FF
+                code set 3: JIS X0212-1990 (a double 7-bit byte set)
+                            restricted to A0-FF in 
+                            the first byte
+                and 21-7E in the second byte
+Alias: csEUCFixWidJapanese
+
+Name: ISO-10646-UCS-Basic
+MIBenum: 1002
+Source: ASCII subset of Unicode.  Basic Latin = collection 1
+        See ISO 10646, Appendix A
+Alias: csUnicodeASCII
+
+Name: ISO-10646-Unicode-Latin1
+MIBenum: 1003
+Source: ISO Latin-1 subset of Unicode. Basic Latin and Latin-1 
+         Supplement  = collections 1 and 2.  See ISO 10646, 
+         Appendix A.  See RFC 1815.
+Alias: csUnicodeLatin1
+Alias: ISO-10646
+
+Name: ISO-10646-J-1
+Source: ISO 10646 Japanese, see RFC 1815.
+
+Name: ISO-Unicode-IBM-1261
+MIBenum: 1005
+Source: IBM Latin-2, -3, -5, Extended Presentation Set, GCSGID: 1261
+Alias: csUnicodeIBM1261
+
+Name: ISO-Unicode-IBM-1268
+MIBenum: 1006
+Source: IBM Latin-4 Extended Presentation Set, GCSGID: 1268
+Alias: csUnidoceIBM1268
+
+Name: ISO-Unicode-IBM-1276
+MIBenum: 1007
+Source: IBM Cyrillic Greek Extended Presentation Set, GCSGID: 1276
+Alias: csUnicodeIBM1276
+
+Name: ISO-Unicode-IBM-1264
+MIBenum: 1008
+Source: IBM Arabic Presentation Set, GCSGID: 1264
+Alias: csUnicodeIBM1264
+
+Name: ISO-Unicode-IBM-1265
+MIBenum: 1009
+Source: IBM Hebrew Presentation Set, GCSGID: 1265
+Alias: csUnicodeIBM1265
+
+Name: ISO-8859-1-Windows-3.0-Latin-1                           [HP-PCL5] 
+MIBenum: 2000
+Source: Extended ISO 8859-1 Latin-1 for Windows 3.0.  
+        PCL Symbol Set id: 9U
+Alias: csWindows30Latin1
+
+Name: ISO-8859-1-Windows-3.1-Latin-1                           [HP-PCL5] 
+MIBenum: 2001
+Source: Extended ISO 8859-1 Latin-1 for Windows 3.1.  
+        PCL Symbol Set id: 19U
+Alias: csWindows31Latin1
+
+Name: ISO-8859-2-Windows-Latin-2                               [HP-PCL5] 
+MIBenum: 2002
+Source: Extended ISO 8859-2.  Latin-2 for Windows 3.1.
+        PCL Symbol Set id: 9E
+Alias: csWindows31Latin2
+
+Name: ISO-8859-9-Windows-Latin-5                               [HP-PCL5] 
+MIBenum: 2003
+Source: Extended ISO 8859-9.  Latin-5 for Windows 3.1
+        PCL Symbol Set id: 5T
+Alias: csWindows31Latin5
+
+Name: Adobe-Standard-Encoding                                    [Adobe]
+MIBenum: 2005
+Source: PostScript Language Reference Manual
+        PCL Symbol Set id: 10J
+Alias: csAdobeStandardEncoding
+
+Name: Ventura-US                                               [HP-PCL5]
+MIBenum: 2006
+Source: Ventura US.  ASCII plus characters typically used in 
+        publishing, like pilcrow, copyright, registered, trade mark, 
+        section, dagger, and double dagger in the range A0 (hex) 
+        to FF (hex).  
+        PCL Symbol Set id: 14J
+Alias: csVenturaUS  
+
+Name: Ventura-International                                    [HP-PCL5]
+MIBenum: 2007
+Source: Ventura International.  ASCII plus coded characters similar 
+        to Roman8.
+        PCL Symbol Set id: 13J
+Alias: csVenturaInternational
+
+Name: PC8-Danish-Norwegian                                     [HP-PCL5]
+MIBenum: 2012
+Source: PC Danish Norwegian
+        8-bit PC set for Danish Norwegian
+        PCL Symbol Set id: 11U
+Alias: csPC8DanishNorwegian
+
+Name: PC8-Turkish                                              [HP-PCL5]
+MIBenum: 2014
+Source: PC Latin Turkish.  PCL Symbol Set id: 9T
+Alias: csPC8Turkish
+
+Name: IBM-Symbols                                             [IBM-CIDT] 
+MIBenum: 2015
+Source: Presentation Set, CPGID: 259
+Alias: csIBMSymbols
+
+Name: IBM-Thai                                                [IBM-CIDT] 
+MIBenum: 2016
+Source: Presentation Set, CPGID: 838
+Alias: csIBMThai
+
+Name: HP-Legal                                                 [HP-PCL5]
+MIBenum: 2017
+Source: PCL 5 Comparison Guide, Hewlett-Packard,
+        HP part number 5961-0510, October 1992
+        PCL Symbol Set id: 1U
+Alias: csHPLegal
+
+Name: HP-Pi-font                                               [HP-PCL5]
+MIBenum: 2018
+Source: PCL 5 Comparison Guide, Hewlett-Packard,
+        HP part number 5961-0510, October 1992
+        PCL Symbol Set id: 15U
+Alias: csHPPiFont
+
+Name: HP-Math8                                                 [HP-PCL5]
+MIBenum: 2019
+Source: PCL 5 Comparison Guide, Hewlett-Packard,
+        HP part number 5961-0510, October 1992
+        PCL Symbol Set id: 8M
+Alias: csHPMath8
+
+Name: Adobe-Symbol-Encoding                                      [Adobe]
+MIBenum: 2020
+Source: PostScript Language Reference Manual
+        PCL Symbol Set id: 5M
+Alias: csHPPSMath
+
+Name: HP-DeskTop                                               [HP-PCL5]
+MIBenum: 2021
+Source: PCL 5 Comparison Guide, Hewlett-Packard,
+        HP part number 5961-0510, October 1992
+        PCL Symbol Set id: 7J
+Alias: csHPDesktop
+
+Name: Ventura-Math                                             [HP-PCL5]
+MIBenum: 2022
+Source: PCL 5 Comparison Guide, Hewlett-Packard,
+        HP part number 5961-0510, October 1992
+        PCL Symbol Set id: 6M
+Alias: csVenturaMath
+
+Name: Microsoft-Publishing                                     [HP-PCL5]
+MIBenum: 2023
+Source: PCL 5 Comparison Guide, Hewlett-Packard,
+        HP part number 5961-0510, October 1992
+        PCL Symbol Set id: 6J
+Alias: csMicrosoftPublishing
+
+Name: Windows-31J
+MIBenum: 2024
+Source: Windows Japanese.  A further extension of Shift_JIS
+        to include NEC special characters (Row 13), NEC
+        selection of IBM extensions (Rows 89 to 92), and IBM
+        extensions (Rows 115 to 119).  The CCS's are
+        JIS X0201:1997, JIS X0208:1997, and these extensions.
+        This charset can be used for the top-level media type "text",
+        but it is of limited or specialized use (see RFC2278).
+        PCL Symbol Set id: 19K
+Alias: csWindows31J
+
+Name: GB2312  (preferred MIME name)
+MIBenum: 2025
+Source: Chinese for People's Republic of China (PRC) mixed one byte, 
+        two byte set: 
+          20-7E = one byte ASCII 
+          A1-FE = two byte PRC Kanji 
+        See GB 2312-80 
+        PCL Symbol Set Id: 18C
+Alias: csGB2312
+
+Name: Big5  (preferred MIME name)
+MIBenum: 2026
+Source: Chinese for Taiwan Multi-byte set.
+        PCL Symbol Set Id: 18T
+Alias: csBig5
+
+Name: windows-1250
+MIBenum: 2250
+Source: Microsoft  (see ../character-set-info/windows-1250) [Lazhintseva]
+Alias: None
+
+Name: windows-1251
+MIBenum: 2251
+Source: Microsoft  (see ../character-set-info/windows-1251) [Lazhintseva]
+Alias: None
+
+Name: windows-1252
+MIBenum: 2252
+Source: Microsoft  (see ../character-set-info/windows-1252)       [Wendt]
+Alias: None
+
+Name: windows-1253
+MIBenum: 2253
+Source: Microsoft  (see ../character-set-info/windows-1253) [Lazhintseva]
+Alias: None
+
+Name: windows-1254
+MIBenum: 2254
+Source: Microsoft  (see ../character-set-info/windows-1254) [Lazhintseva]
+Alias: None
+
+Name: windows-1255
+MIBenum: 2255
+Source: Microsoft  (see ../character-set-info/windows-1255) [Lazhintseva]
+Alias: None
+
+Name: windows-1256
+MIBenum: 2256
+Source: Microsoft  (see ../character-set-info/windows-1256) [Lazhintseva]
+Alias: None 
+
+Name: windows-1257
+MIBenum: 2257
+Source: Microsoft  (see ../character-set-info/windows-1257) [Lazhintseva]
+Alias: None
+
+Name: windows-1258
+MIBenum: 2258
+Source: Microsoft  (see ../character-set-info/windows-1258) [Lazhintseva]
+Alias: None
+
+Name: TIS-620
+MIBenum: 2259
+Source: Thai Industrial Standards Institute (TISI)	     [Tantsetthi]
+
+Name: HZ-GB-2312
+MIBenum: 2085
+Source: RFC 1842, RFC 1843                              [RFC1842, RFC1843]
+
+
+REFERENCES
+
+[RFC1345]  Simonsen, K., "Character Mnemonics & Character Sets",
+           RFC 1345, Rationel Almen Planlaegning, Rationel Almen
+           Planlaegning, June 1992.
+
+[RFC1428]  Vaudreuil, G., "Transition of Internet Mail from
+           Just-Send-8 to 8bit-SMTP/MIME", RFC1428, CNRI, February
+           1993.
+
+[RFC1456]  Vietnamese Standardization Working Group, "Conventions for
+           Encoding the Vietnamese Language VISCII: VIetnamese 
+           Standard Code for Information Interchange VIQR: VIetnamese 
+           Quoted-Readable Specification Revision 1.1", RFC 1456, May
+           1993.
+
+[RFC1468]  Murai, J., Crispin, M., and E. van der Poel, "Japanese
+           Character Encoding for Internet Messages", RFC 1468,
+           Keio University, Panda Programming, June 1993.
+
+[RFC1489]  Chernov, A., "Registration of a Cyrillic Character Set",
+           RFC1489, RELCOM Development Team, July 1993. 
+
+[RFC1554]  Ohta, M., and K. Handa, "ISO-2022-JP-2: Multilingual
+           Extension of ISO-2022-JP", RFC1554, Tokyo Institute of
+           Technology, ETL, December 1993. 
+
+[RFC1556]  Nussbacher, H., "Handling of Bi-directional Texts in MIME",
+           RFC1556, Israeli Inter-University, December 1993. 
+
+[RFC1557]  Choi, U., Chon, K., and H. Park, "Korean Character Encoding
+           for Internet Messages", KAIST, Solvit Chosun Media,
+           December 1993.
+
+[RFC1641]  Goldsmith, D., and M. Davis, "Using Unicode with MIME",
+           RFC1641, Taligent, Inc., July 1994. 
+
+[RFC1642]  Goldsmith, D., and M. Davis, "UTF-7", RFC1642, Taligent,
+           Inc., July 1994.
+
+[RFC1815]  Ohta, M., "Character Sets ISO-10646 and ISO-10646-J-1",
+           RFC 1815, Tokyo Institute of Technology, July 1995.
+
+
+[Adobe]    Adobe Systems Incorporated, PostScript Language Reference
+           Manual, second edition, Addison-Wesley Publishing Company,
+           Inc., 1990.
+
+[HP-PCL5]  Hewlett-Packard Company, "HP PCL 5 Comparison Guide", 
+           (P/N 5021-0329) pp B-13, 1996.
+
+[IBM-CIDT] IBM Corporation, "ABOUT TYPE: IBM's Technical Reference
+           for Core Interchange Digitized Type", Publication number
+           S544-3708-01
+
+[RFC1842]  Wei, Y., J. Li, and Y. Jiang, "ASCII Printable
+           Characters-Based Chinese Character Encoding for Internet
+           Messages", RFC 1842, Harvard University, Rice University,
+           University of Maryland, August 1995.
+
+[RFC1843]  Lee, F., "HZ - A Data Format for Exchanging Files of
+           Arbitrarily Mixed Chinese and ASCII Characters", RFC 1843,
+           Stanford University, August 1995.
+
+[RFC2152]  Goldsmith, D., M. Davis, "UTF-7: A Mail-Safe Transformation
+	   Format of Unicode", RFC 2152, Apple Computer, Inc.,
+	   Taligent Inc., May 1997.
+
+[RFC2279]  Yergeau, F., "UTF-8, A Transformation Format of ISO 10646",
+           RFC 2279, Alis Technologies, January, 1998.
+
+[RFC2781]  Hoffman, P., Yergeau, F., "UTF-16, an encoding of ISO 10646",
+           RFC 2781, February 2000.
+
+
+PEOPLE
+
+[KXS2] Keld Simonsen <Keld.Simonsen at dkuug.dk>
+
+[Choi] Woohyong Choi <whchoi at cosmos.kaist.ac.kr>
+
+[Lazhintseva] Katya Lazhintseva, <katyal at MICROSOFT.com>, May 1996.
+
+[Mahdi] Tamer Mahdi, <tamer at ca.ibm.com>, August 2000.
+
+[Murai] Jun Murai <jun at wide.ad.jp>
+
+[Ohta] Masataka Ohta, <mohta at cc.titech.ac.jp>, July 1995.
+
+[Nussbacher] Hank Nussbacher, <hank at vm.tau.ac.il>
+
+[Pond] Rick Pond, <rickpond at vnet.ibm.com> March 1997.
+
+[Scherer] Markus Scherer, <markus.scherer at jtcsv.com>, August 2000.
+
+[Simonsen] Keld Simonsen, <Keld.Simonsen at rap.dk>, August 2000.
+
+[Tantsetthi] Trin Tantsetthi, <trin at mozart.inet.co.th>, September 1998.
+
+[Tumasonis] Vladas Tumasonis, <vladas.tumasonis at maf.vu.lt>, August 2000.
+
+[Wendt] Chris Wendt, <christw at microsoft.com>, December 1999.
+
+[Yick] Nicky Yick, <cliac at itsd.gcn.gov.hk>, October 2000.
+
+[]
+
+
+
+
+
+
+
diff --git a/WebCore/kwq/make-charset-table.pl b/WebCore/kwq/make-charset-table.pl
new file mode 100755
index 0000000..ef05900
--- /dev/null
+++ b/WebCore/kwq/make-charset-table.pl
@@ -0,0 +1,111 @@
+#!/usr/bin/perl -w
+
+use strict;
+
+
+my $MAC_SUPPORTED_ONLY = 1;
+
+my $canonical_name;
+my $mib_enum;
+my @aliases;
+my %name_to_mac_encoding;
+my %used_mac_encodings;
+
+my $already_wrote_one = 0;
+
+
+
+sub emit_prefix
+{
+    print TABLE "static CharsetEntry table[] = {\n";
+}
+
+sub emit_suffix
+{
+    print TABLE ",\n    {NULL,\n     -1,\n     kCFStringEncodingInvalidId}\n};\n";
+}
+
+
+sub emit_output 
+{
+    my ($canonical_name, $mib_enum, @aliases) = @_;
+    
+    # Bug in the August 23 version of IANA's character-sets document
+    if ($canonical_name eq "ISO-10646-J-1" && ! $mib_enum) {
+	$mib_enum = "1004";
+    }
+
+    my $mac_string_encoding = "kCFStringEncodingInvalidId";
+
+    foreach my $name ($canonical_name, @aliases) {
+	$name =~ tr/A-Z/a-z/;
+	if ($name_to_mac_encoding{$name}) {
+	    $mac_string_encoding = $name_to_mac_encoding{$name};
+	    $used_mac_encodings{$name} = $name;
+	}
+    }
+
+    unless ($MAC_SUPPORTED_ONLY && $mac_string_encoding eq "kCFStringEncodingInvalidId") {
+	foreach my $name ($canonical_name, @aliases) {
+	    print TABLE ",\n" if ($already_wrote_one);
+            print TABLE '    {"' . ${name} . '",' . "\n";
+            print TABLE "     " . ${mib_enum} . ",\n";
+            print TABLE "     " . ${mac_string_encoding} . "}";
+            $already_wrote_one = 1;
+        }
+    }
+}
+
+
+sub process_mac_encodings {
+    while (<MAC_ENCODINGS>) {
+	chomp;
+	if (my ($id, $name) = /([0-9]*):(.*)/) {
+	    $name =~ tr/A-Z/a-z/;
+	    $name_to_mac_encoding{$name} = $id;
+	}
+    }
+}
+
+sub process_iana_charsets {
+    while (<CHARSETS>) {
+	chomp;
+	if ((my $new_canonical_name) = /Name: ([^ \t]*).*/) {
+	    emit_output $canonical_name, $mib_enum, @aliases if ($canonical_name);
+	    
+	    $canonical_name = $new_canonical_name;
+	    $mib_enum = "";
+	    @aliases = ();
+	} elsif ((my $new_mib_enum) = /MIBenum: ([^ \t]*).*/) {
+	    $mib_enum = $new_mib_enum;
+	} elsif ((my $new_alias) = /Alias: ([^ \t]*).*/) {
+	    push @aliases, $new_alias unless ($new_alias eq "None");
+	}
+    }
+}
+
+sub emit_unused_mac_encodings {
+    foreach my $name (keys %name_to_mac_encoding) {
+	if (! $used_mac_encodings{$name}) {
+	    print TABLE ",\n" if ($already_wrote_one);
+	    print TABLE '    {"' . ${name} . '",' . "\n";
+	    print TABLE "     " . -1 . ",\n";
+            print TABLE "     " . $name_to_mac_encoding{$name} . "}";
+            $already_wrote_one = 1;
+	}
+    }
+}
+
+# Program body
+
+open CHARSETS, "<" . $ARGV[0];
+open MAC_ENCODINGS, "<" . $ARGV[1];
+open TABLE, ">" . $ARGV[2];
+
+emit_prefix;
+process_mac_encodings;
+process_iana_charsets;
+emit_unused_mac_encodings;
+emit_suffix;
+
+close TABLE;
diff --git a/WebCore/kwq/make-mac-encodings.c b/WebCore/kwq/make-mac-encodings.c
new file mode 100644
index 0000000..a07888b
--- /dev/null
+++ b/WebCore/kwq/make-mac-encodings.c
@@ -0,0 +1,45 @@
+
+
+#include <CoreFoundation/CoreFoundation.h>
+
+
+static void
+usage(const char *program)
+{
+  printf("Usage: %s OUTFILE\n", program);
+  exit(1);
+}
+
+int
+main (int argc, char **argv)
+{
+  const CFStringEncoding *all_encodings;
+  const CFStringEncoding *p;
+  CFStringRef name;
+  char cname[2048];
+  FILE *output;
+
+  if (argc != 2) {
+    usage(argv[0]);
+  }
+  
+  output = fopen (argv[1], "w");
+
+  if (output == NULL) {
+    printf ("Cannot open file `%s'\n", argv[1]);
+  }
+
+  all_encodings = CFStringGetListOfAvailableEncodings();
+
+  for (p = all_encodings; *p != kCFStringEncodingInvalidId; p++) {
+    name = CFStringConvertEncodingToIANACharSetName(*p);
+    /* All IANA encoding names must be US-ASCII */
+    if (name != NULL) {
+      CFStringGetCString(name, cname, 2048, kCFStringEncodingASCII);
+      fprintf(output,"%ld:%s\n", *p, cname);
+    } else {
+      printf("Warning: nameless encoding %ld\n", *p);
+    }
+  }
+  return 0;
+}
diff --git a/WebCore/kwq/qt/qstring.h b/WebCore/kwq/qt/qstring.h
index 3c972ef..8bd8fe9 100644
--- a/WebCore/kwq/qt/qstring.h
+++ b/WebCore/kwq/qt/qstring.h
@@ -340,6 +340,7 @@ public:
 #endif
     static QString fromStringWithEncoding(const char *, int, CFStringEncoding);
     static QString fromCFMutableString(CFMutableStringRef);
+    static QString fromCFString(CFStringRef);
 
     // constructors, copy constructors, and destructors ------------------------
 
diff --git a/WebCore/src/kdelibs/khtml/misc/decoder.cpp b/WebCore/src/kdelibs/khtml/misc/decoder.cpp
index 80c6d02..89d0462 100644
--- a/WebCore/src/kdelibs/khtml/misc/decoder.cpp
+++ b/WebCore/src/kdelibs/khtml/misc/decoder.cpp
@@ -84,7 +84,7 @@ void Decoder::setEncoding(const char *_encoding, bool force)
     if( !b ) // in case the codec didn't exist, we keep the old one (fixes some sites specifying invalid codecs)
 	m_codec = old;
     else
-	haveEncoding = force;
+        haveEncoding = force;
     delete m_decoder;
     m_decoder = m_codec->makeDecoder();
 #ifdef DECODE_DEBUG
@@ -230,7 +230,12 @@ QString Decoder::decode(const char *data, int len)
             }
             return QString::null;
         }
+    } 
+#ifdef _KWQ_
+    else {
+        buffer += QCString(data, len+1);
     }
+#endif
 
  found:
     // if we still haven't found an encoding latin1 will be used...
diff --git a/WebCore/src/kwq/.cvsignore b/WebCore/src/kwq/.cvsignore
index 0dd5e43..bccb4e5 100644
--- a/WebCore/src/kwq/.cvsignore
+++ b/WebCore/src/kwq/.cvsignore
@@ -2,3 +2,6 @@ Makefile
 *.dummy
 export-objects
 export-headers
+KWQCharsetData.c
+mac-encodings.txt
+make-mac-encodings
diff --git a/WebCore/kwq/KWQKFactory.mm b/WebCore/src/kwq/KWQCharsets.h
similarity index 78%
copy from WebCore/kwq/KWQKFactory.mm
copy to WebCore/src/kwq/KWQCharsets.h
index 2a2bfed..f4b8842 100644
--- a/WebCore/kwq/KWQKFactory.mm
+++ b/WebCore/src/kwq/KWQCharsets.h
@@ -23,23 +23,16 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
-#include <kwqdebug.h>
-#include <factory.h>
+#ifndef KWQCHARSETS_H_
+#define KWQCHARSETS_H_
 
-namespace KParts {
+#include <CoreFoundation/CoreFoundation.h>
 
-Factory::Factory()
-{
-    _logNotYetImplemented();
-}
+CFStringEncoding KWQCFStringEncodingFromIANACharsetName(CFStringRef charsetName);
+CFStringEncoding KWQCFStringEncodingFromMIB(int mib);
 
+CFStringRef KWQCFStringEncodingToIANACharsetName(CFStringEncoding encoding);
+int KWQCFStringEncodingToMIB(CFStringEncoding encoding);
 
-Factory::~Factory()
-{
-    _logNotYetImplemented();
-}
-
-
-} // namespace KParts
-
+#endif KWQCHARSETS_H_
 
diff --git a/WebCore/src/kwq/KWQCharsets.mm b/WebCore/src/kwq/KWQCharsets.mm
new file mode 100644
index 0000000..689ae3a
--- /dev/null
+++ b/WebCore/src/kwq/KWQCharsets.mm
@@ -0,0 +1,133 @@
+/*
+ * Copyright (C) 2001 Apple Computer, Inc.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+
+#include "KWQCharsets.h"
+#include <CoreFoundation/CoreFoundation.h>
+
+typedef struct CharsetEntry {
+  char *name;
+  int mib;
+  CFStringEncoding encoding;;
+} CharsetEntry;
+
+
+/* The following autogenerated file includes the charset data. */
+#include "KWQCharsetData.c"
+
+static CFMutableDictionaryRef nameToEncoding = NULL;
+static CFMutableDictionaryRef mibToEncoding = NULL;
+static CFMutableDictionaryRef encodingToName = NULL;
+static CFMutableDictionaryRef encodingToMIB = NULL;
+
+
+static void buildDictionaries (void)
+{
+  int i;
+
+  nameToEncoding = CFDictionaryCreateMutable(NULL, 0, &kCFTypeDictionaryKeyCallBacks, NULL);
+  mibToEncoding = CFDictionaryCreateMutable(NULL, 0, NULL, NULL);
+
+  encodingToName = CFDictionaryCreateMutable(NULL, 0, NULL, &kCFTypeDictionaryValueCallBacks);
+  encodingToMIB = CFDictionaryCreateMutable(NULL, 0, NULL, NULL);
+
+  for (i = 0; table[i].name != NULL; i++) {
+    CFStringRef name;
+    name = CFStringCreateWithCString(NULL, table[i].name, kCFStringEncodingASCII);
+
+    if (name != NULL) {
+      CFDictionarySetValue(nameToEncoding, (void *) name, (void *) table[i].encoding);
+      CFDictionarySetValue(encodingToName, (void *) table[i].encoding, (void *) name);
+    }
+
+    if (table[i].mib != -1) {
+      CFDictionarySetValue(mibToEncoding, (void *) table[i].mib, (void *) table[i].encoding);
+      CFDictionarySetValue(encodingToMIB, (void *) table[i].encoding, (void *) table[i].mib);
+    }
+  }
+}
+
+CFStringEncoding KWQCFStringEncodingFromIANACharsetName(CFStringRef charsetName)
+{
+  const void *value;
+
+  if (nameToEncoding == NULL) {
+    buildDictionaries ();
+  }
+  
+  if (CFDictionaryGetValueIfPresent(nameToEncoding, (void *) charsetName, &value)) {
+    return (CFStringEncoding) value;
+  } else {
+    return kCFStringEncodingInvalidId;
+  }
+}
+
+
+CFStringEncoding KWQCFStringEncodingFromMIB(int mib)
+{
+  const void *value;
+
+  if (mibToEncoding == NULL) {
+    buildDictionaries ();
+  }
+
+  if (CFDictionaryGetValueIfPresent(mibToEncoding, (void *) mib,  &value)) {
+    return (CFStringEncoding) value;
+  } else {
+    return kCFStringEncodingInvalidId;
+  }
+}
+
+
+
+CFStringRef KWQCFStringEncodingToIANACharsetName(CFStringEncoding encoding)
+{
+  const void *value;
+
+  if (encodingToName == NULL) {
+      buildDictionaries ();
+  }
+
+  if (CFDictionaryGetValueIfPresent(encodingToName, (void *) encoding, &value)) {
+      return (CFStringRef) value;
+  } else {
+    return NULL;
+  }
+}
+
+
+int KWQCFStringEncodingToMIB(CFStringEncoding encoding)
+{
+  const void *value;
+
+  if (encodingToMIB == NULL) {
+      buildDictionaries ();
+  }
+
+  if (CFDictionaryGetValueIfPresent(encodingToMIB, (void *) encoding, &value)) {
+      return (int) value;
+  } else {
+      return -1;
+  }
+}
diff --git a/WebCore/src/kwq/KWQKCharsets.mm b/WebCore/src/kwq/KWQKCharsets.mm
index 4e1d574..ef8c843 100644
--- a/WebCore/src/kwq/KWQKCharsets.mm
+++ b/WebCore/src/kwq/KWQKCharsets.mm
@@ -45,31 +45,34 @@ KCharsets::~KCharsets()
 
 QTextCodec *KCharsets::codecForName(const QString &qs) const
 {
-    // FIXME: need real implementation here
-    _logPartiallyImplemented();
     return QTextCodec::codecForName(qs.latin1());
 }
 
 QTextCodec *KCharsets::codecForName(const QString &qs, bool &ok) const
 {
-    // FIXME: need real implementation here
-    _logPartiallyImplemented();
-    ok = false;
-    return QTextCodec::codecForName(qs.latin1());
+    QTextCodec *codec = QTextCodec::codecForName(qs.latin1());
+    if (codec == NULL) {
+        ok = false;
+        codec = QTextCodec::codecForName("latin1");
+    } else {
+        ok = true;
+    }
+
+    return codec;
 }
 
 QFont::CharSet KCharsets::charsetForEncoding(const QString &) const
 {
     // FIXME: need real implementation here
     _logPartiallyImplemented();
-    return QFont::Latin1;
+    return QFont::Unicode;
 }
 
 QFont::CharSet KCharsets::charsetForEncoding(const QString &, bool) const
 {
     // FIXME: need real implementation here
     _logPartiallyImplemented();
-    return QFont::Latin1;
+    return QFont::Unicode;
 }
 
 void KCharsets::setQFont(QFont &font, QFont::CharSet) const
@@ -108,3 +111,4 @@ bool KCharsets::supportsScript(const QFont &, QFont::CharSet)
     _logPartiallyImplemented();
     return true;
 }
+
diff --git a/WebCore/src/kwq/KWQKHTMLPart.mm b/WebCore/src/kwq/KWQKHTMLPart.mm
index 1aecde7..9ef7ef5 100644
--- a/WebCore/src/kwq/KWQKHTMLPart.mm
+++ b/WebCore/src/kwq/KWQKHTMLPart.mm
@@ -202,15 +202,46 @@ KHTMLPart::~KHTMLPart()
     _logNotYetImplemented();
 }
 
+static NSString *
+encodingFromContentType (NSString *contentType)
+{
+    NSRange range;
+    NSString *result = nil;
+
+    if (contentType == nil) {
+	return result;
+    }
+
+    range = [contentType rangeOfString:@"charset="];
+    
+    if (range.length != 0) {
+        result = [contentType substringFromIndex:range.location+range.length];
+    }
+
+    result = [[result componentsSeparatedByString:@";"] objectAtIndex:0];
+
+    return result;
+}
+
 // NOTE: This code emulates the interface used by the original khtml part  
 void KHTMLPart::slotData(id <WCURICacheData> data) 
 {
+    NSString *encoding;
+    QString enc;
+
     if (!d->m_workingURL.isEmpty()) {
         //begin(d->m_workingURL, d->m_extension->urlArgs().xOffset, d->m_extension->urlArgs().yOffset);
         begin(d->m_workingURL, 0, 0);
         d->m_workingURL = KURL();
     }
-          
+
+    encoding = encodingFromContentType ([[data headers] objectForKey:@"Content-Type"]);
+    if (encoding != NULL) {
+        enc = QString::fromCFString((CFStringRef) encoding);
+
+        setEncoding (enc, true);
+    }
+
     write((const char *)[data cacheData], [data cacheDataSize]);    
 }
 
@@ -442,6 +473,12 @@ void KHTMLPart::begin( const KURL &url, int xOffset, int yOffset)
     d->m_baseURL = KURL();
     d->m_workingURL = url;
 
+    /* FIXME: this is a pretty gross way to make sure the decoder gets reinitialized for each page. */
+    if (d->m_decoder != NULL) {
+	delete d->m_decoder;
+	d->m_decoder = NULL;
+    }
+
     if (!d->m_workingURL.isEmpty())
     {
         KURL::List lst = KURL::split( d->m_workingURL );
@@ -503,7 +540,7 @@ void KHTMLPart::write(const char *str, int len)
     // begin lines added in lieu of big fixme    
     if ( !d->m_decoder ) {
         d->m_decoder = new khtml::Decoder();
-        if(d->m_encoding != QString::null)
+        if(!d->m_encoding.isNull())
             d->m_decoder->setEncoding(d->m_encoding.latin1(), d->m_haveEncoding);
         else {
             //FIXME: d->m_decoder->setEncoding(settings()->encoding().latin1(), d->m_haveEncoding);
@@ -603,7 +640,28 @@ bool KHTMLPart::setCharset( const QString &name, bool override = false )
 
 bool KHTMLPart::setEncoding( const QString &name, bool override = false )
 {
-    _logNeverImplemented();
+    d->m_encoding = name;
+    d->m_haveEncoding = override;
+
+/* FIXME: do we need any of these bits?
+//    setCharset( name, override );
+     d->m_charset = KGlobal::charsets()->charsetForEncoding(name);
+     d->m_settings->setCharset( d->m_charset );
+     // the script should not be unicode. We need to know the document is eg. arabic to be
+     // able to choose a unicode font that contains arabic glyphs.
+     d->m_settings->setScript( KGlobal::charsets()->charsetForEncoding( name, true ) );
+
+    if( !m_url.isEmpty() ) {
+        // reload document
+        closeURL();
+        KURL url = m_url;
+        m_url = 0;
+        openURL(url);
+    }
+
+    return true;
+*/
+    _logPartiallyImplemented();
     return FALSE;
 }
 
@@ -1061,6 +1119,7 @@ void KHTMLPart::khtmlMouseMoveEvent( khtml::MouseMoveEvent *event )
             ->setSelection(d->m_selectionEnd.handle(),d->m_endOffset,
                            d->m_selectionStart.handle(),d->m_startOffset);
       }
+    }
 #else
       if ( d->m_doc && d->m_view ) {
         QPoint diff( _mouse->globalPos() - d->m_dragLastPos );
@@ -1069,8 +1128,8 @@ void KHTMLPart::khtmlMouseMoveEvent( khtml::MouseMoveEvent *event )
           d->m_view->scrollBy( -diff.x(), -diff.y() );
           d->m_dragLastPos = _mouse->globalPos();
         }
-#endif
     }
+#endif
   }
 
 }
@@ -1116,7 +1175,6 @@ void KHTMLPart::khtmlMouseReleaseEvent( khtml::MouseReleaseEvent *event )
     }
   }
 #endif
-
 #ifndef KHTML_NO_SELECTION
   // delete selection in case start and end position are at the same point
   if(d->m_selectionStart == d->m_selectionEnd && d->m_startOffset == d->m_endOffset) {
@@ -1168,6 +1226,7 @@ void KHTMLPart::khtmlMouseReleaseEvent( khtml::MouseReleaseEvent *event )
     //emitSelectionChanged();
   }
 #endif
+
 }
 
 void KHTMLPart::khtmlDrawContentsEvent( khtml::DrawContentsEvent * )
@@ -1387,4 +1446,4 @@ void KHTMLPart::checkCompleted()
         // tell anyone who's interested that we're done
         [[NSNotificationCenter defaultCenter] postNotificationName:@"uri-done" object:urlString];
     }
-}
\ No newline at end of file
+}
diff --git a/WebCore/src/kwq/KWQString.mm b/WebCore/src/kwq/KWQString.mm
index 25733ef..812d6c2 100644
--- a/WebCore/src/kwq/KWQString.mm
+++ b/WebCore/src/kwq/KWQString.mm
@@ -144,6 +144,19 @@ QString QString::fromCFMutableString(CFMutableStringRef cfs)
     return qs;
 }
 
+QString QString::fromCFString(CFStringRef cfs)
+{
+    CFMutableStringRef ref;
+    QString qs;
+
+    ref = CFStringCreateMutableCopy(NULL, CFStringGetLength(cfs), cfs);
+    qs = QString::fromCFMutableString(ref);
+    CFRelease(ref);
+    
+    return qs;
+}
+
+
 // constructors, copy constructors, and destructors ----------------------------
 
 #ifndef _KWQ_QSTRING_INLINES_
diff --git a/WebCore/src/kwq/KWQtextcodec.mm b/WebCore/src/kwq/KWQtextcodec.mm
index d83c139..d95256f 100644
--- a/WebCore/src/kwq/KWQtextcodec.mm
+++ b/WebCore/src/kwq/KWQtextcodec.mm
@@ -27,12 +27,34 @@
 
 #include <qtextcodec.h>
 #include <kwqdebug.h>
+#include <KWQCharsets.h>
 
 // USING_BORROWED_QSTRING ======================================================
 #ifndef USING_BORROWED_QSTRING
 
-// FIXME: do we need this once we have a real implementation?
-static QTextCodec latin1TextCodec(kCFStringEncodingISOLatin1);
+static CFMutableDictionaryRef encodingToCodec = NULL;
+
+static QTextCodec *codecForCFStringEncoding(CFStringEncoding encoding)
+{
+    const void *value;
+    QTextCodec *codec;
+
+    if (encodingToCodec == NULL) {
+        encodingToCodec =  CFDictionaryCreateMutable(NULL, 0, NULL, NULL);
+    }
+    
+    if (CFDictionaryGetValueIfPresent(encodingToCodec, (void *)encoding, &value)) {
+        return (QTextCodec *)value;
+    } else {
+        codec = new QTextCodec(encoding);
+	CFDictionarySetValue(encodingToCodec, (void *)encoding, (void *)codec);
+	return codec;
+    }
+}
+
+
+
+
 
 // class QTextDecoder ==========================================================
 
@@ -60,25 +82,40 @@ QString QTextDecoder::toUnicode(const char *chs, int len)
 
 // static member functions -----------------------------------------------------
 
-QTextCodec *QTextCodec::codecForMib(int)
+QTextCodec *QTextCodec::codecForMib(int mib)
 {
-    // FIXME: need real implementation here
-    _logPartiallyImplemented();
-    return &latin1TextCodec;
+    CFStringEncoding encoding;
+
+    encoding = KWQCFStringEncodingFromMIB(mib);
+
+    if (encoding == kCFStringEncodingInvalidId) {
+        return NULL;
+    } else {
+        return codecForCFStringEncoding(encoding);
+    }
 }
 
-QTextCodec *QTextCodec::codecForName(const char *, int)
+
+QTextCodec *QTextCodec::codecForName(const char *name, int accuracy)
 {
-    // FIXME: need real implementation here
-    _logPartiallyImplemented();
-    return &latin1TextCodec;
+    CFStringRef cfname;
+    CFStringEncoding encoding;
+
+    cfname = CFStringCreateWithCString(NULL, name, kCFStringEncodingASCII);
+
+    encoding = KWQCFStringEncodingFromIANACharsetName(cfname);
+    CFRelease(cfname);
+
+    if (encoding == kCFStringEncodingInvalidId) {
+        return NULL;
+    } else {
+        return codecForCFStringEncoding(encoding);
+    }
 }
 
 QTextCodec *QTextCodec::codecForLocale()
 {
-    // FIXME: need real implementation here
-    _logPartiallyImplemented();
-    return &latin1TextCodec;
+    return codecForCFStringEncoding(CFStringGetSystemEncoding());
 }
 
 // constructors, copy constructors, and destructors ----------------------------
@@ -97,16 +134,12 @@ QTextCodec::~QTextCodec()
 
 const char* QTextCodec::name() const
 {
-    // FIXME: need real implementation here
-    _logNotYetImplemented();
-    return "\0";
+    return QString::fromCFString(KWQCFStringEncodingToIANACharsetName(encoding)).latin1();
 }
 
 int QTextCodec::mibEnum() const
 {
-    // FIXME: need real implementation here
-    _logNotYetImplemented();
-    return 0;
+  return KWQCFStringEncodingToMIB(encoding);
 }
 
 QTextDecoder *QTextCodec::makeDecoder() const
diff --git a/WebCore/src/kwq/Makefile.in b/WebCore/src/kwq/Makefile.in
index 38a248e..e9249c6 100644
--- a/WebCore/src/kwq/Makefile.in
+++ b/WebCore/src/kwq/Makefile.in
@@ -28,6 +28,7 @@ MMOBJECTS = \
     KWQButton.o \
     KWQCString.o \
     KWQChar.o \
+    KWQCharsets.o \
     KWQCheckBox.o \
     KWQColor.o \
     KWQColorGroup.o \
@@ -133,6 +134,7 @@ MMOBJECTS = \
 MOBJECTS = \
 	$(NULL)
 
+
 EXPORT_HEADERS = $(HEADERS)
 
 OBJECTS = $(MMOBJECTS) $(MOBJECTS)
@@ -200,6 +202,33 @@ $(LIBRARY): $(OBJECTS)
 	$(AR) $(ARFLAGS) $(LIBRARY) $(OBJECTS)
 	$(RANLIB) $(LIBRARY)
 
+make-mac-encodings: make-mac-encodings.o
+	$(CC) -o $@ $< $(LDFLAGS) -framework CoreFoundation
+
+mac-encodings.txt: make-mac-encodings
+	./make-mac-encodings $@
+
+KWQCharsetData.c: make-charset-table.pl character-sets.txt mac-encodings.txt
+	./make-charset-table.pl character-sets.txt mac-encodings.txt KWQCharsetData.c 
+
+KWQCharsets.o: KWQCharsetData.c
+
+CHARSET_FILES = make-mac-encodings \
+	 make-mac-encodings.o \
+	mac-encodings.txt \
+	KWQCharsetData.c \
+	$(NULL)
+
+KWQCharsets.o: KWQCharsetData.c
+
+#----------------------------------------------------------------------
+#
+
+CLEAN_FILES = $(OBJECTS) \
+	$(LIBRARY) \
+	$(CHARSET_FILES) \
+	$(NULL)
+
 #----------------------------------------------------------------------
 # include make rules boilerplate
 
diff --git a/WebCore/src/kwq/character-sets.txt b/WebCore/src/kwq/character-sets.txt
new file mode 100644
index 0000000..149bf70
--- /dev/null
+++ b/WebCore/src/kwq/character-sets.txt
@@ -0,0 +1,1752 @@
+
+===================================================================
+CHARACTER SETS
+
+(last updated 2001 August 23)
+
+These are the official names for character sets that may be used in
+the Internet and may be referred to in Internet documentation.  These
+names are expressed in ANSI_X3.4-1968 which is commonly called
+US-ASCII or simply ASCII.  The character set most commonly use in the
+Internet and used especially in protocol standards is US-ASCII, this
+is strongly encouraged.  The use of the name US-ASCII is also
+encouraged.
+
+The character set names may be up to 40 characters taken from the
+printable characters of US-ASCII.  However, no distinction is made
+between use of upper and lower case letters.
+
+The MIBenum value is a unique value for use in MIBs to identify coded
+character sets.
+
+The value space for MIBenum values has been divided into three
+regions. The first region (3-999) consists of coded character sets
+that have been standardized by some standard setting organization.
+This region is intended for standards that do not have subset
+implementations. The second region (1000-1999) is for the Unicode and
+ISO/IEC 10646 coded character sets together with a specification of a
+(set of) sub-repetoires that may occur.  The third region (>1999) is
+intended for vendor specific coded character sets.
+
+	Assigned MIB enum Numbers
+	-------------------------
+	0-2		Reserved
+	3-999		Set By Standards Organizations
+	1000-1999	Unicode / 10646
+	2000-2999	Vendor
+
+The aliases that start with "cs" have been added for use with the
+Printer MIB (see RFC 1759) and contain the standard numbers along with
+suggestive names in order to facilitate applications that want to
+display the names in user interfaces.  The "cs" stands for character
+set and is provided for applications that need a lower case first
+letter but want to use mixed case thereafter that cannot contain any
+special characters, such as underbar ("_") and dash ("-").  If the
+character set is from an ISO standard, its cs alias is the ISO
+standard number or name.  If the character set is not from an ISO
+standard, but is registered with ISO (ECMA is the current ISO
+Registration Authority), the ISO Registry number is specified as
+ISOnnn followed by letters suggestive of the name or standards number
+of the code set.  When a national or international standard is
+revised, the year of revision is added to the cs alias of the new
+character set entry in the IANA Registry in order to distinguish the
+revised character set from the original character set.
+
+
+Character Set                                               Reference
+-------------                                               ---------
+
+Name: ANSI_X3.4-1968                                   [RFC1345,KXS2]
+MIBenum: 3
+Source: ECMA registry
+Alias: iso-ir-6
+Alias: ANSI_X3.4-1986
+Alias: ISO_646.irv:1991
+Alias: ASCII
+Alias: ISO646-US
+Alias: US-ASCII (preferred MIME name)
+Alias: us
+Alias: IBM367
+Alias: cp367
+Alias: csASCII
+
+Name: ISO-10646-UTF-1
+MIBenum: 27
+Source: Universal Transfer Format (1), this is the multibyte
+        encoding, that subsets ASCII-7. It does not have byte
+        ordering issues.
+Alias: csISO10646UTF1
+
+Name: ISO_646.basic:1983                                [RFC1345,KXS2]
+MIBenum: 28
+Source: ECMA registry
+Alias: ref
+Alias: csISO646basic1983
+
+Name: INVARIANT                                         [RFC1345,KXS2]
+MIBenum: 29
+Alias: csINVARIANT
+
+Name: ISO_646.irv:1983                                  [RFC1345,KXS2]
+MIBenum: 30
+Source: ECMA registry
+Alias: iso-ir-2
+Alias: irv
+Alias: csISO2IntlRefVersion
+
+Name: BS_4730                                           [RFC1345,KXS2]
+MIBenum: 20
+Source: ECMA registry
+Alias: iso-ir-4
+Alias: ISO646-GB
+Alias: gb
+Alias: uk
+Alias: csISO4UnitedKingdom
+
+Name: NATS-SEFI                                         [RFC1345,KXS2]
+MIBenum: 31
+Source: ECMA registry
+Alias: iso-ir-8-1
+Alias: csNATSSEFI
+
+Name: NATS-SEFI-ADD                                     [RFC1345,KXS2]
+MIBenum: 32
+Source: ECMA registry
+Alias: iso-ir-8-2
+Alias: csNATSSEFIADD
+
+Name: NATS-DANO                                         [RFC1345,KXS2]
+MIBenum: 33
+Source: ECMA registry
+Alias: iso-ir-9-1
+Alias: csNATSDANO
+
+Name: NATS-DANO-ADD                                     [RFC1345,KXS2]
+MIBenum: 34
+Source: ECMA registry
+Alias: iso-ir-9-2
+Alias: csNATSDANOADD
+
+Name: SEN_850200_B                                      [RFC1345,KXS2]
+MIBenum: 35
+Source: ECMA registry
+Alias: iso-ir-10
+Alias: FI
+Alias: ISO646-FI
+Alias: ISO646-SE
+Alias: se
+Alias: csISO10Swedish
+
+Name: SEN_850200_C                                      [RFC1345,KXS2]
+MIBenum: 21
+Source: ECMA registry
+Alias: iso-ir-11
+Alias: ISO646-SE2
+Alias: se2
+Alias: csISO11SwedishForNames
+
+Name: KS_C_5601-1987                                    [RFC1345,KXS2]
+MIBenum: 36
+Source: ECMA registry
+Alias: iso-ir-149
+Alias: KS_C_5601-1989
+Alias: KSC_5601
+Alias: korean
+Alias: csKSC56011987
+
+Name: ISO-2022-KR  (preferred MIME name)                [RFC1557,Choi]
+MIBenum: 37
+Source: RFC-1557 (see also KS_C_5601-1987)
+Alias: csISO2022KR
+
+Name: EUC-KR  (preferred MIME name)                     [RFC1557,Choi]
+MIBenum: 38
+Source: RFC-1557 (see also KS_C_5861-1992)
+Alias: csEUCKR
+
+Name: ISO-2022-JP  (preferred MIME name)               [RFC1468,Murai]
+MIBenum: 39
+Source: RFC-1468 (see also RFC-2237)
+Alias: csISO2022JP
+
+Name: ISO-2022-JP-2  (preferred MIME name)              [RFC1554,Ohta]
+MIBenum: 40
+Source: RFC-1554
+Alias: csISO2022JP2
+
+Name: ISO-2022-CN                                            [RFC1922]
+MIBenum: 104
+Source: RFC-1922
+
+Name: ISO-2022-CN-EXT                                        [RFC1922]
+MIBenum: 105
+Source: RFC-1922
+
+Name: JIS_C6220-1969-jp                                 [RFC1345,KXS2]
+MIBenum: 41
+Source: ECMA registry
+Alias: JIS_C6220-1969
+Alias: iso-ir-13
+Alias: katakana
+Alias: x0201-7
+Alias: csISO13JISC6220jp
+
+Name: JIS_C6220-1969-ro                                 [RFC1345,KXS2]
+MIBenum: 42
+Source: ECMA registry
+Alias: iso-ir-14
+Alias: jp
+Alias: ISO646-JP
+Alias: csISO14JISC6220ro
+
+Name: IT                                                [RFC1345,KXS2]
+MIBenum: 22
+Source: ECMA registry
+Alias: iso-ir-15
+Alias: ISO646-IT
+Alias: csISO15Italian
+
+Name: PT                                                [RFC1345,KXS2]
+MIBenum: 43
+Source: ECMA registry
+Alias: iso-ir-16
+Alias: ISO646-PT
+Alias: csISO16Portuguese
+
+Name: ES                                                [RFC1345,KXS2]
+MIBenum: 23
+Source: ECMA registry
+Alias: iso-ir-17
+Alias: ISO646-ES
+Alias: csISO17Spanish
+
+Name: greek7-old                                        [RFC1345,KXS2]
+MIBenum: 44
+Source: ECMA registry
+Alias: iso-ir-18
+Alias: csISO18Greek7Old
+
+Name: latin-greek                                       [RFC1345,KXS2]
+MIBenum: 45
+Source: ECMA registry
+Alias: iso-ir-19
+Alias: csISO19LatinGreek
+
+Name: DIN_66003                                         [RFC1345,KXS2]
+MIBenum: 24
+Source: ECMA registry
+Alias: iso-ir-21
+Alias: de
+Alias: ISO646-DE
+Alias: csISO21German
+
+Name: NF_Z_62-010_(1973)                                [RFC1345,KXS2]
+MIBenum: 46
+Source: ECMA registry
+Alias: iso-ir-25
+Alias: ISO646-FR1
+Alias: csISO25French
+
+Name: Latin-greek-1                                     [RFC1345,KXS2]
+MIBenum: 47
+Source: ECMA registry
+Alias: iso-ir-27
+Alias: csISO27LatinGreek1
+
+Name: ISO_5427                                          [RFC1345,KXS2]
+MIBenum: 48
+Source: ECMA registry
+Alias: iso-ir-37
+Alias: csISO5427Cyrillic
+
+Name: JIS_C6226-1978                                    [RFC1345,KXS2]
+MIBenum: 49
+Source: ECMA registry
+Alias: iso-ir-42
+Alias: csISO42JISC62261978
+
+Name: BS_viewdata                                       [RFC1345,KXS2]
+MIBenum: 50
+Source: ECMA registry
+Alias: iso-ir-47
+Alias: csISO47BSViewdata
+
+Name: INIS                                              [RFC1345,KXS2]
+MIBenum: 51
+Source: ECMA registry
+Alias: iso-ir-49
+Alias: csISO49INIS
+
+Name: INIS-8                                            [RFC1345,KXS2]
+MIBenum: 52
+Source: ECMA registry
+Alias: iso-ir-50
+Alias: csISO50INIS8
+
+Name: INIS-cyrillic                                     [RFC1345,KXS2]
+MIBenum: 53
+Source: ECMA registry
+Alias: iso-ir-51
+Alias: csISO51INISCyrillic
+
+Name: ISO_5427:1981                                     [RFC1345,KXS2]
+MIBenum: 54
+Source: ECMA registry
+Alias: iso-ir-54
+Alias: ISO5427Cyrillic1981
+
+Name: ISO_5428:1980                                     [RFC1345,KXS2]
+MIBenum: 55
+Source: ECMA registry
+Alias: iso-ir-55
+Alias: csISO5428Greek
+
+Name: GB_1988-80                                        [RFC1345,KXS2]
+MIBenum: 56
+Source: ECMA registry
+Alias: iso-ir-57
+Alias: cn
+Alias: ISO646-CN
+Alias: csISO57GB1988
+
+Name: GB_2312-80                                        [RFC1345,KXS2]
+MIBenum: 57
+Source: ECMA registry
+Alias: iso-ir-58
+Alias: chinese
+Alias: csISO58GB231280
+
+Name: NS_4551-1                                         [RFC1345,KXS2]
+MIBenum: 25
+Source: ECMA registry
+Alias: iso-ir-60
+Alias: ISO646-NO
+Alias: no
+Alias: csISO60DanishNorwegian
+Alias: csISO60Norwegian1
+
+Name: NS_4551-2                                          [RFC1345,KXS2]
+MIBenum: 58
+Source: ECMA registry
+Alias: ISO646-NO2
+Alias: iso-ir-61
+Alias: no2
+Alias: csISO61Norwegian2
+
+Name: NF_Z_62-010                                        [RFC1345,KXS2]
+MIBenum: 26
+Source: ECMA registry
+Alias: iso-ir-69
+Alias: ISO646-FR
+Alias: fr
+Alias: csISO69French
+
+Name: videotex-suppl                                     [RFC1345,KXS2]
+MIBenum: 59
+Source: ECMA registry
+Alias: iso-ir-70
+Alias: csISO70VideotexSupp1
+
+Name: PT2                                                [RFC1345,KXS2]
+MIBenum: 60
+Source: ECMA registry
+Alias: iso-ir-84
+Alias: ISO646-PT2
+Alias: csISO84Portuguese2
+
+Name: ES2                                                [RFC1345,KXS2]
+MIBenum: 61
+Source: ECMA registry
+Alias: iso-ir-85
+Alias: ISO646-ES2
+Alias: csISO85Spanish2
+
+Name: MSZ_7795.3                                         [RFC1345,KXS2]
+MIBenum: 62
+Source: ECMA registry
+Alias: iso-ir-86
+Alias: ISO646-HU
+Alias: hu
+Alias: csISO86Hungarian
+
+Name: JIS_C6226-1983                                     [RFC1345,KXS2]
+MIBenum: 63
+Source: ECMA registry
+Alias: iso-ir-87
+Alias: x0208
+Alias: JIS_X0208-1983
+Alias: csISO87JISX0208
+
+Name: greek7                                             [RFC1345,KXS2]
+MIBenum: 64
+Source: ECMA registry
+Alias: iso-ir-88
+Alias: csISO88Greek7
+
+Name: ASMO_449                                           [RFC1345,KXS2]
+MIBenum: 65
+Source: ECMA registry
+Alias: ISO_9036
+Alias: arabic7
+Alias: iso-ir-89
+Alias: csISO89ASMO449
+
+Name: iso-ir-90                                          [RFC1345,KXS2]
+MIBenum: 66
+Source: ECMA registry
+Alias: csISO90
+
+Name: JIS_C6229-1984-a                                   [RFC1345,KXS2]
+MIBenum: 67
+Source: ECMA registry
+Alias: iso-ir-91
+Alias: jp-ocr-a
+Alias: csISO91JISC62291984a
+
+Name: JIS_C6229-1984-b                                   [RFC1345,KXS2]
+MIBenum: 68
+Source: ECMA registry
+Alias: iso-ir-92
+Alias: ISO646-JP-OCR-B
+Alias: jp-ocr-b
+Alias: csISO92JISC62991984b
+
+Name: JIS_C6229-1984-b-add                               [RFC1345,KXS2]
+MIBenum: 69
+Source: ECMA registry
+Alias: iso-ir-93
+Alias: jp-ocr-b-add
+Alias: csISO93JIS62291984badd
+
+Name: JIS_C6229-1984-hand                                [RFC1345,KXS2]
+MIBenum: 70
+Source: ECMA registry
+Alias: iso-ir-94
+Alias: jp-ocr-hand
+Alias: csISO94JIS62291984hand
+
+Name: JIS_C6229-1984-hand-add                            [RFC1345,KXS2]
+MIBenum: 71
+Source: ECMA registry
+Alias: iso-ir-95
+Alias: jp-ocr-hand-add
+Alias: csISO95JIS62291984handadd
+
+Name: JIS_C6229-1984-kana                                [RFC1345,KXS2]
+MIBenum: 72
+Source: ECMA registry
+Alias: iso-ir-96
+Alias: csISO96JISC62291984kana
+
+Name: ISO_2033-1983                                      [RFC1345,KXS2]
+MIBenum: 73
+Source: ECMA registry
+Alias: iso-ir-98
+Alias: e13b
+Alias: csISO2033
+
+Name: ANSI_X3.110-1983                                   [RFC1345,KXS2]
+MIBenum: 74
+Source: ECMA registry
+Alias: iso-ir-99
+Alias: CSA_T500-1983
+Alias: NAPLPS
+Alias: csISO99NAPLPS
+
+Name: ISO_8859-1:1987                                    [RFC1345,KXS2]
+MIBenum: 4
+Source: ECMA registry
+Alias: iso-ir-100
+Alias: ISO_8859-1
+Alias: ISO-8859-1 (preferred MIME name)
+Alias: latin1
+Alias: l1
+Alias: IBM819
+Alias: CP819
+Alias: csISOLatin1
+
+Name: ISO_8859-2:1987                                    [RFC1345,KXS2]
+MIBenum: 5
+Source: ECMA registry
+Alias: iso-ir-101
+Alias: ISO_8859-2
+Alias: ISO-8859-2 (preferred MIME name)
+Alias: latin2
+Alias: l2
+Alias: csISOLatin2
+
+Name: T.61-7bit                                          [RFC1345,KXS2]
+MIBenum: 75
+Source: ECMA registry
+Alias: iso-ir-102
+Alias: csISO102T617bit
+
+Name: T.61-8bit                                          [RFC1345,KXS2]
+MIBenum: 76
+Alias: T.61
+Source: ECMA registry
+Alias: iso-ir-103
+Alias: csISO103T618bit
+
+Name: ISO_8859-3:1988                                    [RFC1345,KXS2]
+MIBenum: 6
+Source: ECMA registry
+Alias: iso-ir-109
+Alias: ISO_8859-3
+Alias: ISO-8859-3 (preferred MIME name)
+Alias: latin3
+Alias: l3
+Alias: csISOLatin3
+
+Name: ISO_8859-4:1988                                    [RFC1345,KXS2]
+MIBenum: 7
+Source: ECMA registry
+Alias: iso-ir-110
+Alias: ISO_8859-4
+Alias: ISO-8859-4 (preferred MIME name)
+Alias: latin4
+Alias: l4
+Alias: csISOLatin4
+
+Name: ECMA-cyrillic                                      [RFC1345,KXS2]
+MIBenum: 77
+Source: ECMA registry
+Alias: iso-ir-111
+Alias: csISO111ECMACyrillic
+
+Name: CSA_Z243.4-1985-1                                  [RFC1345,KXS2]
+MIBenum: 78
+Source: ECMA registry
+Alias: iso-ir-121
+Alias: ISO646-CA
+Alias: csa7-1
+Alias: ca
+Alias: csISO121Canadian1
+
+Name: CSA_Z243.4-1985-2                                  [RFC1345,KXS2]
+MIBenum: 79
+Source: ECMA registry
+Alias: iso-ir-122
+Alias: ISO646-CA2
+Alias: csa7-2
+Alias: csISO122Canadian2
+
+Name: CSA_Z243.4-1985-gr                                 [RFC1345,KXS2]
+MIBenum: 80
+Source: ECMA registry
+Alias: iso-ir-123
+Alias: csISO123CSAZ24341985gr
+
+Name: ISO_8859-6:1987                                    [RFC1345,KXS2]
+MIBenum: 9
+Source: ECMA registry
+Alias: iso-ir-127
+Alias: ISO_8859-6
+Alias: ISO-8859-6 (preferred MIME name)
+Alias: ECMA-114
+Alias: ASMO-708
+Alias: arabic
+Alias: csISOLatinArabic
+
+Name: ISO_8859-6-E                                       [RFC1556,IANA]
+MIBenum: 81
+Source: RFC1556
+Alias: csISO88596E
+Alias: ISO-8859-6-E (preferred MIME name)
+
+Name: ISO_8859-6-I                                       [RFC1556,IANA]
+MIBenum: 82
+Source: RFC1556
+Alias: csISO88596I
+Alias: ISO-8859-6-I (preferred MIME name)
+
+Name: ISO_8859-7:1987                            [RFC1947,RFC1345,KXS2]
+MIBenum: 10
+Source: ECMA registry
+Alias: iso-ir-126
+Alias: ISO_8859-7
+Alias: ISO-8859-7 (preferred MIME name)
+Alias: ELOT_928
+Alias: ECMA-118
+Alias: greek
+Alias: greek8
+Alias: csISOLatinGreek
+
+Name: T.101-G2                                            [RFC1345,KXS2]
+MIBenum: 83
+Source: ECMA registry
+Alias: iso-ir-128
+Alias: csISO128T101G2
+
+Name: ISO_8859-8:1988                                     [RFC1345,KXS2]
+MIBenum: 11
+Source: ECMA registry
+Alias: iso-ir-138
+Alias: ISO_8859-8
+Alias: ISO-8859-8 (preferred MIME name)
+Alias: hebrew
+Alias: csISOLatinHebrew
+
+Name: ISO_8859-8-E                                  [RFC1556,Nussbacher]
+MIBenum: 84
+Source: RFC1556
+Alias: csISO88598E
+Alias: ISO-8859-8-E (preferred MIME name)
+
+Name: ISO_8859-8-I                                  [RFC1556,Nussbacher]
+MIBenum: 85
+Source: RFC1556
+Alias: csISO88598I
+Alias: ISO-8859-8-I (preferred MIME name)
+
+Name: CSN_369103                                          [RFC1345,KXS2]
+MIBenum: 86
+Source: ECMA registry
+Alias: iso-ir-139
+Alias: csISO139CSN369103
+
+Name: JUS_I.B1.002                                        [RFC1345,KXS2]
+MIBenum: 87
+Source: ECMA registry
+Alias: iso-ir-141
+Alias: ISO646-YU
+Alias: js
+Alias: yu
+Alias: csISO141JUSIB1002
+
+Name: ISO_6937-2-add                                      [RFC1345,KXS2]
+MIBenum: 14
+Source: ECMA registry and ISO 6937-2:1983
+Alias: iso-ir-142
+Alias: csISOTextComm
+
+Name: IEC_P27-1                                           [RFC1345,KXS2]
+MIBenum: 88
+Source: ECMA registry
+Alias: iso-ir-143
+Alias: csISO143IECP271
+
+Name: ISO_8859-5:1988                                     [RFC1345,KXS2]
+MIBenum: 8
+Source: ECMA registry
+Alias: iso-ir-144
+Alias: ISO_8859-5
+Alias: ISO-8859-5 (preferred MIME name)
+Alias: cyrillic
+Alias: csISOLatinCyrillic
+
+Name: JUS_I.B1.003-serb                                   [RFC1345,KXS2]
+MIBenum: 89
+Source: ECMA registry
+Alias: iso-ir-146
+Alias: serbian
+Alias: csISO146Serbian
+
+Name: JUS_I.B1.003-mac                                    [RFC1345,KXS2]
+MIBenum: 90
+Source: ECMA registry
+Alias: macedonian
+Alias: iso-ir-147
+Alias: csISO147Macedonian
+
+Name: ISO_8859-9:1989                                     [RFC1345,KXS2]
+MIBenum: 12
+Source: ECMA registry
+Alias: iso-ir-148
+Alias: ISO_8859-9
+Alias: ISO-8859-9 (preferred MIME name)
+Alias: latin5
+Alias: l5
+Alias: csISOLatin5
+
+Name: greek-ccitt                                         [RFC1345,KXS2]
+MIBenum: 91
+Source: ECMA registry
+Alias: iso-ir-150
+Alias: csISO150
+Alias: csISO150GreekCCITT
+
+Name: NC_NC00-10:81                                       [RFC1345,KXS2]
+MIBenum: 92
+Source: ECMA registry
+Alias: cuba
+Alias: iso-ir-151
+Alias: ISO646-CU
+Alias: csISO151Cuba
+
+Name: ISO_6937-2-25                                       [RFC1345,KXS2]
+MIBenum: 93
+Source: ECMA registry
+Alias: iso-ir-152
+Alias: csISO6937Add
+
+Name: GOST_19768-74                                       [RFC1345,KXS2]
+MIBenum: 94
+Source: ECMA registry
+Alias: ST_SEV_358-88
+Alias: iso-ir-153
+Alias: csISO153GOST1976874
+
+Name: ISO_8859-supp                                       [RFC1345,KXS2]
+MIBenum: 95
+Source: ECMA registry
+Alias: iso-ir-154
+Alias: latin1-2-5
+Alias: csISO8859Supp
+
+Name: ISO_10367-box                                       [RFC1345,KXS2]
+MIBenum: 96
+Source: ECMA registry
+Alias: iso-ir-155
+Alias: csISO10367Box
+
+Name: ISO-8859-10 (preferred MIME name)			  [RFC1345,KXS2]
+MIBenum: 13
+Source: ECMA registry
+Alias: iso-ir-157
+Alias: l6
+Alias: ISO_8859-10:1992
+Alias: csISOLatin6
+Alias: latin6
+
+Name: latin-lap                                           [RFC1345,KXS2]
+MIBenum: 97
+Source: ECMA registry
+Alias: lap
+Alias: iso-ir-158
+Alias: csISO158Lap
+
+Name: JIS_X0212-1990                                      [RFC1345,KXS2]
+MIBenum: 98
+Source: ECMA registry
+Alias: x0212
+Alias: iso-ir-159
+Alias: csISO159JISX02121990
+
+Name: DS_2089                                             [RFC1345,KXS2]
+MIBenum: 99
+Source: Danish Standard, DS 2089, February 1974
+Alias: DS2089
+Alias: ISO646-DK
+Alias: dk
+Alias: csISO646Danish
+
+Name: us-dk                                               [RFC1345,KXS2]
+MIBenum: 100
+Alias: csUSDK
+
+Name: dk-us                                               [RFC1345,KXS2]
+MIBenum: 101
+Alias: csDKUS
+
+Name: JIS_X0201                                           [RFC1345,KXS2]
+MIBenum: 15
+Source: JIS X 0201-1976.   One byte only, this is equivalent to 
+        JIS/Roman (similar to ASCII) plus eight-bit half-width 
+        Katakana
+Alias: X0201
+Alias: csHalfWidthKatakana
+
+Name: KSC5636                                             [RFC1345,KXS2]
+MIBenum: 102
+Alias: ISO646-KR
+Alias: csKSC5636
+
+Name: ISO-10646-UCS-2
+MIBenum: 1000
+Source: the 2-octet Basic Multilingual Plane, aka Unicode
+        this needs to specify network byte order: the standard
+        does not specify (it is a 16-bit integer space)
+Alias: csUnicode
+
+Name: ISO-10646-UCS-4
+MIBenum: 1001
+Source: the full code space. (same comment about byte order,
+        these are 31-bit numbers.
+Alias: csUCS4
+
+Name: DEC-MCS                                             [RFC1345,KXS2]
+MIBenum: 2008
+Source: VAX/VMS User's Manual, 
+        Order Number: AI-Y517A-TE, April 1986.
+Alias: dec
+Alias: csDECMCS
+
+Name: hp-roman8                                  [HP-PCL5,RFC1345,KXS2]
+MIBenum: 2004
+Source: LaserJet IIP Printer User's Manual, 
+        HP part no 33471-90901, Hewlet-Packard, June 1989.
+Alias: roman8
+Alias: r8
+Alias: csHPRoman8
+
+Name: macintosh                                           [RFC1345,KXS2]
+MIBenum: 2027
+Source: The Unicode Standard ver1.0, ISBN 0-201-56788-1, Oct 1991
+Alias: mac
+Alias: csMacintosh
+
+Name: IBM037                                              [RFC1345,KXS2]
+MIBenum: 2028
+Source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+Alias: cp037
+Alias: ebcdic-cp-us
+Alias: ebcdic-cp-ca
+Alias: ebcdic-cp-wt
+Alias: ebcdic-cp-nl
+Alias: csIBM037
+
+Name: IBM038                                              [RFC1345,KXS2]
+MIBenum: 2029
+Source: IBM 3174 Character Set Ref, GA27-3831-02, March 1990
+Alias: EBCDIC-INT
+Alias: cp038
+Alias: csIBM038
+
+Name: IBM273                                              [RFC1345,KXS2]
+MIBenum: 2030
+Source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+Alias: CP273
+Alias: csIBM273
+
+Name: IBM274                                              [RFC1345,KXS2]
+MIBenum: 2031
+Source: IBM 3174 Character Set Ref, GA27-3831-02, March 1990
+Alias: EBCDIC-BE
+Alias: CP274
+Alias: csIBM274
+
+Name: IBM275                                              [RFC1345,KXS2]
+MIBenum: 2032
+Source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+Alias: EBCDIC-BR
+Alias: cp275
+Alias: csIBM275
+
+Name: IBM277                                              [RFC1345,KXS2]
+MIBenum: 2033
+Source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+Alias: EBCDIC-CP-DK
+Alias: EBCDIC-CP-NO
+Alias: csIBM277
+
+Name: IBM278                                              [RFC1345,KXS2]
+MIBenum: 2034
+Source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+Alias: CP278
+Alias: ebcdic-cp-fi
+Alias: ebcdic-cp-se
+Alias: csIBM278
+
+Name: IBM280                                              [RFC1345,KXS2]
+MIBenum: 2035
+Source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+Alias: CP280
+Alias: ebcdic-cp-it
+Alias: csIBM280
+
+Name: IBM281                                              [RFC1345,KXS2]
+MIBenum: 2036
+Source: IBM 3174 Character Set Ref, GA27-3831-02, March 1990
+Alias: EBCDIC-JP-E
+Alias: cp281
+Alias: csIBM281
+
+Name: IBM284                                              [RFC1345,KXS2]
+MIBenum: 2037
+Source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+Alias: CP284
+Alias: ebcdic-cp-es
+Alias: csIBM284
+
+Name: IBM285                                              [RFC1345,KXS2]
+MIBenum: 2038
+Source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+Alias: CP285
+Alias: ebcdic-cp-gb
+Alias: csIBM285
+
+Name: IBM290                                              [RFC1345,KXS2]
+MIBenum: 2039
+Source: IBM 3174 Character Set Ref, GA27-3831-02, March 1990
+Alias: cp290
+Alias: EBCDIC-JP-kana
+Alias: csIBM290
+
+Name: IBM297                                              [RFC1345,KXS2]
+MIBenum: 2040
+Source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+Alias: cp297
+Alias: ebcdic-cp-fr
+Alias: csIBM297
+
+Name: IBM420                                              [RFC1345,KXS2]
+MIBenum: 2041
+Source: IBM NLS RM Vol2 SE09-8002-01, March 1990, 
+        IBM NLS RM p 11-11
+Alias: cp420
+Alias: ebcdic-cp-ar1
+Alias: csIBM420
+
+Name: IBM423                                              [RFC1345,KXS2]
+MIBenum: 2042
+Source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+Alias: cp423
+Alias: ebcdic-cp-gr
+Alias: csIBM423
+
+Name: IBM424                                              [RFC1345,KXS2]
+MIBenum: 2043
+Source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+Alias: cp424
+Alias: ebcdic-cp-he
+Alias: csIBM424
+
+Name: IBM437                                              [RFC1345,KXS2]
+MIBenum: 2011
+Source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+Alias: cp437
+Alias: 437
+Alias: csPC8CodePage437
+
+Name: IBM500                                              [RFC1345,KXS2]
+MIBenum: 2044
+Source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+Alias: CP500
+Alias: ebcdic-cp-be
+Alias: ebcdic-cp-ch
+Alias: csIBM500
+
+Name: IBM775                                                   [HP-PCL5]
+MIBenum: 2087
+Source: HP PCL 5 Comparison Guide (P/N 5021-0329) pp B-13, 1996
+Alias: cp775
+Alias: csPC775Baltic
+
+Name: IBM850                                              [RFC1345,KXS2]
+MIBenum: 2009
+Source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+Alias: cp850
+Alias: 850
+Alias: csPC850Multilingual
+
+Name: IBM851                                              [RFC1345,KXS2]
+MIBenum: 2045
+Source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+Alias: cp851
+Alias: 851
+Alias: csIBM851
+
+Name: IBM852                                              [RFC1345,KXS2]
+MIBenum: 2010
+Source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+Alias: cp852
+Alias: 852
+Alias: csPCp852
+
+Name: IBM855                                              [RFC1345,KXS2]
+MIBenum: 2046
+Source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+Alias: cp855
+Alias: 855
+Alias: csIBM855
+
+Name: IBM857                                              [RFC1345,KXS2]
+MIBenum: 2047
+Source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+Alias: cp857
+Alias: 857
+Alias: csIBM857
+
+Name: IBM860                                              [RFC1345,KXS2]
+MIBenum: 2048
+Source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+Alias: cp860
+Alias: 860
+Alias: csIBM860
+
+Name: IBM861                                              [RFC1345,KXS2]
+MIBenum: 2049
+Source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+Alias: cp861
+Alias: 861
+Alias: cp-is
+Alias: csIBM861
+
+Name: IBM862                                              [RFC1345,KXS2]
+MIBenum: 2013
+Source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+Alias: cp862
+Alias: 862
+Alias: csPC862LatinHebrew
+
+Name: IBM863                                              [RFC1345,KXS2]
+MIBenum: 2050
+Source: IBM Keyboard layouts and code pages, PN 07G4586 June 1991
+Alias: cp863
+Alias: 863
+Alias: csIBM863
+
+Name: IBM864                                              [RFC1345,KXS2]
+MIBenum: 2051
+Source: IBM Keyboard layouts and code pages, PN 07G4586 June 1991
+Alias: cp864
+Alias: csIBM864
+
+Name: IBM865                                              [RFC1345,KXS2]
+MIBenum: 2052
+Source: IBM DOS 3.3 Ref (Abridged), 94X9575 (Feb 1987)
+Alias: cp865
+Alias: 865
+Alias: csIBM865
+
+Name: IBM866                                                     [Pond]
+MIBenum: 2086
+Source: IBM NLDG Volume 2 (SE09-8002-03) August 1994
+Alias: cp866
+Alias: 866
+Alias: csIBM866
+
+Name: IBM868                                              [RFC1345,KXS2]
+MIBenum: 2053
+Source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+Alias: CP868
+Alias: cp-ar
+Alias: csIBM868
+
+Name: IBM869                                              [RFC1345,KXS2]
+MIBenum: 2054
+Source: IBM Keyboard layouts and code pages, PN 07G4586 June 1991
+Alias: cp869
+Alias: 869
+Alias: cp-gr
+Alias: csIBM869
+
+Name: IBM870                                              [RFC1345,KXS2]
+MIBenum: 2055
+Source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+Alias: CP870
+Alias: ebcdic-cp-roece
+Alias: ebcdic-cp-yu
+Alias: csIBM870
+
+Name: IBM871                                              [RFC1345,KXS2]
+MIBenum: 2056
+Source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+Alias: CP871
+Alias: ebcdic-cp-is
+Alias: csIBM871
+
+Name: IBM880                                              [RFC1345,KXS2]
+MIBenum: 2057
+Source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+Alias: cp880
+Alias: EBCDIC-Cyrillic
+Alias: csIBM880
+
+Name: IBM891                                              [RFC1345,KXS2]
+MIBenum: 2058
+Source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+Alias: cp891
+Alias: csIBM891
+
+Name: IBM903                                              [RFC1345,KXS2]
+MIBenum: 2059
+Source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+Alias: cp903
+Alias: csIBM903
+
+Name: IBM904                                              [RFC1345,KXS2]
+MIBenum: 2060
+Source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+Alias: cp904
+Alias: 904
+Alias: csIBBM904
+
+Name: IBM905                                              [RFC1345,KXS2]
+MIBenum: 2061
+Source: IBM 3174 Character Set Ref, GA27-3831-02, March 1990
+Alias: CP905
+Alias: ebcdic-cp-tr
+Alias: csIBM905
+
+Name: IBM918                                              [RFC1345,KXS2]
+MIBenum: 2062
+Source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+Alias: CP918
+Alias: ebcdic-cp-ar2
+Alias: csIBM918
+
+Name: IBM1026                                             [RFC1345,KXS2]
+MIBenum: 2063
+Source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+Alias: CP1026
+Alias: csIBM1026
+
+Name: EBCDIC-AT-DE                                        [RFC1345,KXS2]
+MIBenum: 2064
+Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
+Alias: csIBMEBCDICATDE
+
+Name: EBCDIC-AT-DE-A                                      [RFC1345,KXS2]
+MIBenum: 2065 
+Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 
+Alias: csEBCDICATDEA
+
+Name: EBCDIC-CA-FR                                        [RFC1345,KXS2]
+MIBenum: 2066
+Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
+Alias: csEBCDICCAFR
+
+Name: EBCDIC-DK-NO                                        [RFC1345,KXS2]
+MIBenum: 2067
+Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
+Alias: csEBCDICDKNO
+
+Name: EBCDIC-DK-NO-A                                      [RFC1345,KXS2]
+MIBenum: 2068
+Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
+Alias: csEBCDICDKNOA
+
+Name: EBCDIC-FI-SE                                        [RFC1345,KXS2]
+MIBenum: 2069
+Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
+Alias: csEBCDICFISE
+
+Name: EBCDIC-FI-SE-A                                      [RFC1345,KXS2]
+MIBenum: 2070
+Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
+Alias: csEBCDICFISEA
+
+Name: EBCDIC-FR                                           [RFC1345,KXS2]
+MIBenum: 2071
+Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
+Alias: csEBCDICFR
+
+Name: EBCDIC-IT                                           [RFC1345,KXS2]
+MIBenum: 2072
+Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
+Alias: csEBCDICIT
+
+Name: EBCDIC-PT                                           [RFC1345,KXS2]
+MIBenum: 2073
+Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
+Alias: csEBCDICPT
+
+Name: EBCDIC-ES                                           [RFC1345,KXS2]
+MIBenum: 2074
+Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
+Alias: csEBCDICES
+
+Name: EBCDIC-ES-A                                         [RFC1345,KXS2]
+MIBenum: 2075
+Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
+Alias: csEBCDICESA
+
+Name: EBCDIC-ES-S                                         [RFC1345,KXS2]
+MIBenum: 2076
+Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
+Alias: csEBCDICESS
+
+Name: EBCDIC-UK                                           [RFC1345,KXS2]
+MIBenum: 2077
+Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
+Alias: csEBCDICUK
+
+Name: EBCDIC-US                                           [RFC1345,KXS2]
+MIBenum: 2078
+Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
+Alias: csEBCDICUS
+
+Name: UNKNOWN-8BIT                                             [RFC1428]
+MIBenum: 2079
+Alias: csUnknown8BiT
+
+Name: MNEMONIC                                            [RFC1345,KXS2]
+MIBenum: 2080
+Source: RFC 1345, also known as "mnemonic+ascii+38"
+Alias: csMnemonic
+
+Name: MNEM                                                [RFC1345,KXS2]
+MIBenum: 2081
+Source: RFC 1345, also known as "mnemonic+ascii+8200"
+Alias: csMnem
+
+Name: VISCII                                                   [RFC1456]
+MIBenum: 2082
+Source: RFC 1456
+Alias: csVISCII
+
+Name: VIQR                                                     [RFC1456]
+MIBenum: 2083
+Source: RFC 1456
+Alias: csVIQR
+
+Name: KOI8-R  (preferred MIME name)                            [RFC1489]
+MIBenum: 2084
+Source: RFC 1489, based on GOST-19768-74, ISO-6937/8, 
+        INIS-Cyrillic, ISO-5427.
+Alias: csKOI8R
+
+Name: KOI8-U                                                   [RFC2319]
+MIBenum: 2088
+Source: RFC 2319
+
+Name: IBM00858
+MIBenum: 2089
+Source: IBM See (.../assignments/character-set-info/IBM00858)    [Mahdi]
+Alias: CCSID00858
+Alias: CP00858
+Alias: PC-Multilingual-850+euro
+
+Name: IBM00924
+MIBenum: 2090
+Source: IBM See (.../assignments/character-set-info/IBM00924)    [Mahdi]
+Alias: CCSID00924
+Alias: CP00924
+Alias: ebcdic-Latin9--euro
+
+Name: IBM01140
+MIBenum: 2091
+Source: IBM See (.../assignments/character-set-info/IBM01140)    [Mahdi]
+Alias: CCSID01140
+Alias: CP01140
+Alias: ebcdic-us-37+euro
+
+Name: IBM01141
+MIBenum: 2092
+Source: IBM See (.../assignments/character-set-info/IBM01141)    [Mahdi]
+Alias: CCSID01141
+Alias: CP01141
+Alias: ebcdic-de-273+euro
+
+Name: IBM01142
+MIBenum: 2093
+Source: IBM See (.../assignments/character-set-info/IBM01142)    [Mahdi]
+Alias: CCSID01142
+Alias: CP01142
+Alias: ebcdic-dk-277+euro
+Alias: ebcdic-no-277+euro
+
+Name: IBM01143
+MIBenum: 2094
+Source: IBM See (.../assignments/character-set-info/IBM01143)    [Mahdi]
+Alias: CCSID01143
+Alias: CP01143
+Alias: ebcdic-fi-278+euro
+Alias: ebcdic-se-278+euro
+
+Name: IBM01144
+MIBenum: 2095
+Source: IBM See (.../assignments/character-set-info/IBM01144)    [Mahdi]
+Alias: CCSID01144
+Alias: CP01144
+Alias: ebcdic-it-280+euro
+
+Name: IBM01145
+MIBenum: 2096
+Source: IBM See (.../assignments/character-set-info/IBM01145)    [Mahdi]
+Alias: CCSID01145
+Alias: CP01145
+Alias: ebcdic-es-284+euro
+
+Name: IBM01146
+MIBenum: 2097
+Source: IBM See (.../assignments/character-set-info/IBM01146)    [Mahdi]
+Alias: CCSID01146
+Alias: CP01146
+Alias: ebcdic-gb-285+euro
+
+Name: IBM01147
+MIBenum: 2098
+Source: IBM See (.../assignments/character-set-info/IBM01147)    [Mahdi]
+Alias: CCSID01147
+Alias: CP01147
+Alias: ebcdic-fr-297+euro
+
+Name: IBM01148
+MIBenum: 2099
+Source: IBM See (.../assignments/character-set-info/IBM01148)    [Mahdi]
+Alias: CCSID01148
+Alias: CP01148
+Alias: ebcdic-international-500+euro
+
+Name: IBM01149
+MIBenum: 2100
+Source: IBM See (.../assignments/character-set-info/IBM01149)    [Mahdi]
+Alias: CCSID01149
+Alias: CP01149
+Alias: ebcdic-is-871+euro
+
+Name: Big5-HKSCS
+MIBenum: 2101
+Source:   See (.../assignments/character-set-info/Big5-HKSCS)     [Yick]
+Alias: None
+
+Name: UNICODE-1-1                                              [RFC1641]
+MIBenum: 1010
+Source: RFC 1641
+Alias: csUnicode11
+
+Name: SCSU
+MIBenum: 1011
+Source: SCSU See (.../assignments/character-set-info/SCSU)     [Scherer]
+Alias: None 
+
+Name: UTF-7                                                    [RFC2152]
+MIBenum: 1012
+Source: RFC 2152
+Alias: None
+
+Name: UTF-16BE                                                 [RFC2781]
+MIBenum: 1013
+Source: RFC 2781
+Alias: None
+
+Name: UTF-16LE                                                 [RFC2781]
+MIBenum: 1014
+Source: RFC 2781
+Alias: None
+
+Name: UTF-16                                                   [RFC2781]
+MIBenum: 1015
+Source: RFC 2781
+Alias: None
+
+Name: UNICODE-1-1-UTF-7                                        [RFC1642]
+MIBenum: 103
+Source: RFC 1642
+Alias: csUnicode11UTF7
+
+Name: UTF-8                                                    [RFC2279]
+MIBenum: 106
+Source: RFC 2279
+Alias: None 
+
+Name: ISO-8859-13
+MIBenum: 109
+Source: ISO See (...assignments/character-set-info/iso-8859-13)[Tumasonis] 
+Alias: None
+
+Name: ISO-8859-14
+MIBenum: 110
+Source: ISO See (...assignments/character-set-info/iso-8859-14) [Simonsen]
+Alias: iso-ir-199
+Alias: ISO_8859-14:1998
+Alias: ISO_8859-14
+Alias: latin8
+Alias: iso-celtic
+Alias: l8
+
+Name: ISO-8859-15
+MIBenum: 111
+Source: ISO
+Alias: ISO_8859-15
+
+Name: ISO-8859-16
+MIBenum: 112
+Source: ISO
+Alias: 
+
+Name: JIS_Encoding
+MIBenum: 16
+Source: JIS X 0202-1991.  Uses ISO 2022 escape sequences to
+        shift code sets as documented in JIS X 0202-1991.
+Alias: csJISEncoding
+
+Name: Shift_JIS  (preferred MIME name)
+MIBenum: 17
+Source: This charset is an extension of csHalfWidthKatakana by
+        adding graphic characters in JIS X 0208.  The CCS's are
+        JIS X0201:1997 and JIS X0208:1997.  The
+        complete definition is shown in Appendix 1 of JIS
+        X0208:1997.
+        This charset can be used for the top-level media type "text".
+Alias: MS_Kanji 
+Alias: csShiftJIS
+
+Name: Extended_UNIX_Code_Packed_Format_for_Japanese
+MIBenum: 18
+Source: Standardized by OSF, UNIX International, and UNIX Systems
+        Laboratories Pacific.  Uses ISO 2022 rules to select
+               code set 0: US-ASCII (a single 7-bit byte set)
+               code set 1: JIS X0208-1990 (a double 8-bit byte set)
+                           restricted to A0-FF in both bytes
+               code set 2: Half Width Katakana (a single 7-bit byte set)
+                           requiring SS2 as the character prefix
+               code set 3: JIS X0212-1990 (a double 7-bit byte set)
+                           restricted to A0-FF in both bytes
+                           requiring SS3 as the character prefix
+Alias: csEUCPkdFmtJapanese
+Alias: EUC-JP  (preferred MIME name)
+
+Name: Extended_UNIX_Code_Fixed_Width_for_Japanese
+MIBenum: 19
+Source: Used in Japan.  Each character is 2 octets.
+                code set 0: US-ASCII (a single 7-bit byte set)
+                              1st byte = 00
+                              2nd byte = 20-7E
+                code set 1: JIS X0208-1990 (a double 7-bit byte set)
+                            restricted  to A0-FF in both bytes 
+                code set 2: Half Width Katakana (a single 7-bit byte set)
+                              1st byte = 00
+                              2nd byte = A0-FF
+                code set 3: JIS X0212-1990 (a double 7-bit byte set)
+                            restricted to A0-FF in 
+                            the first byte
+                and 21-7E in the second byte
+Alias: csEUCFixWidJapanese
+
+Name: ISO-10646-UCS-Basic
+MIBenum: 1002
+Source: ASCII subset of Unicode.  Basic Latin = collection 1
+        See ISO 10646, Appendix A
+Alias: csUnicodeASCII
+
+Name: ISO-10646-Unicode-Latin1
+MIBenum: 1003
+Source: ISO Latin-1 subset of Unicode. Basic Latin and Latin-1 
+         Supplement  = collections 1 and 2.  See ISO 10646, 
+         Appendix A.  See RFC 1815.
+Alias: csUnicodeLatin1
+Alias: ISO-10646
+
+Name: ISO-10646-J-1
+Source: ISO 10646 Japanese, see RFC 1815.
+
+Name: ISO-Unicode-IBM-1261
+MIBenum: 1005
+Source: IBM Latin-2, -3, -5, Extended Presentation Set, GCSGID: 1261
+Alias: csUnicodeIBM1261
+
+Name: ISO-Unicode-IBM-1268
+MIBenum: 1006
+Source: IBM Latin-4 Extended Presentation Set, GCSGID: 1268
+Alias: csUnidoceIBM1268
+
+Name: ISO-Unicode-IBM-1276
+MIBenum: 1007
+Source: IBM Cyrillic Greek Extended Presentation Set, GCSGID: 1276
+Alias: csUnicodeIBM1276
+
+Name: ISO-Unicode-IBM-1264
+MIBenum: 1008
+Source: IBM Arabic Presentation Set, GCSGID: 1264
+Alias: csUnicodeIBM1264
+
+Name: ISO-Unicode-IBM-1265
+MIBenum: 1009
+Source: IBM Hebrew Presentation Set, GCSGID: 1265
+Alias: csUnicodeIBM1265
+
+Name: ISO-8859-1-Windows-3.0-Latin-1                           [HP-PCL5] 
+MIBenum: 2000
+Source: Extended ISO 8859-1 Latin-1 for Windows 3.0.  
+        PCL Symbol Set id: 9U
+Alias: csWindows30Latin1
+
+Name: ISO-8859-1-Windows-3.1-Latin-1                           [HP-PCL5] 
+MIBenum: 2001
+Source: Extended ISO 8859-1 Latin-1 for Windows 3.1.  
+        PCL Symbol Set id: 19U
+Alias: csWindows31Latin1
+
+Name: ISO-8859-2-Windows-Latin-2                               [HP-PCL5] 
+MIBenum: 2002
+Source: Extended ISO 8859-2.  Latin-2 for Windows 3.1.
+        PCL Symbol Set id: 9E
+Alias: csWindows31Latin2
+
+Name: ISO-8859-9-Windows-Latin-5                               [HP-PCL5] 
+MIBenum: 2003
+Source: Extended ISO 8859-9.  Latin-5 for Windows 3.1
+        PCL Symbol Set id: 5T
+Alias: csWindows31Latin5
+
+Name: Adobe-Standard-Encoding                                    [Adobe]
+MIBenum: 2005
+Source: PostScript Language Reference Manual
+        PCL Symbol Set id: 10J
+Alias: csAdobeStandardEncoding
+
+Name: Ventura-US                                               [HP-PCL5]
+MIBenum: 2006
+Source: Ventura US.  ASCII plus characters typically used in 
+        publishing, like pilcrow, copyright, registered, trade mark, 
+        section, dagger, and double dagger in the range A0 (hex) 
+        to FF (hex).  
+        PCL Symbol Set id: 14J
+Alias: csVenturaUS  
+
+Name: Ventura-International                                    [HP-PCL5]
+MIBenum: 2007
+Source: Ventura International.  ASCII plus coded characters similar 
+        to Roman8.
+        PCL Symbol Set id: 13J
+Alias: csVenturaInternational
+
+Name: PC8-Danish-Norwegian                                     [HP-PCL5]
+MIBenum: 2012
+Source: PC Danish Norwegian
+        8-bit PC set for Danish Norwegian
+        PCL Symbol Set id: 11U
+Alias: csPC8DanishNorwegian
+
+Name: PC8-Turkish                                              [HP-PCL5]
+MIBenum: 2014
+Source: PC Latin Turkish.  PCL Symbol Set id: 9T
+Alias: csPC8Turkish
+
+Name: IBM-Symbols                                             [IBM-CIDT] 
+MIBenum: 2015
+Source: Presentation Set, CPGID: 259
+Alias: csIBMSymbols
+
+Name: IBM-Thai                                                [IBM-CIDT] 
+MIBenum: 2016
+Source: Presentation Set, CPGID: 838
+Alias: csIBMThai
+
+Name: HP-Legal                                                 [HP-PCL5]
+MIBenum: 2017
+Source: PCL 5 Comparison Guide, Hewlett-Packard,
+        HP part number 5961-0510, October 1992
+        PCL Symbol Set id: 1U
+Alias: csHPLegal
+
+Name: HP-Pi-font                                               [HP-PCL5]
+MIBenum: 2018
+Source: PCL 5 Comparison Guide, Hewlett-Packard,
+        HP part number 5961-0510, October 1992
+        PCL Symbol Set id: 15U
+Alias: csHPPiFont
+
+Name: HP-Math8                                                 [HP-PCL5]
+MIBenum: 2019
+Source: PCL 5 Comparison Guide, Hewlett-Packard,
+        HP part number 5961-0510, October 1992
+        PCL Symbol Set id: 8M
+Alias: csHPMath8
+
+Name: Adobe-Symbol-Encoding                                      [Adobe]
+MIBenum: 2020
+Source: PostScript Language Reference Manual
+        PCL Symbol Set id: 5M
+Alias: csHPPSMath
+
+Name: HP-DeskTop                                               [HP-PCL5]
+MIBenum: 2021
+Source: PCL 5 Comparison Guide, Hewlett-Packard,
+        HP part number 5961-0510, October 1992
+        PCL Symbol Set id: 7J
+Alias: csHPDesktop
+
+Name: Ventura-Math                                             [HP-PCL5]
+MIBenum: 2022
+Source: PCL 5 Comparison Guide, Hewlett-Packard,
+        HP part number 5961-0510, October 1992
+        PCL Symbol Set id: 6M
+Alias: csVenturaMath
+
+Name: Microsoft-Publishing                                     [HP-PCL5]
+MIBenum: 2023
+Source: PCL 5 Comparison Guide, Hewlett-Packard,
+        HP part number 5961-0510, October 1992
+        PCL Symbol Set id: 6J
+Alias: csMicrosoftPublishing
+
+Name: Windows-31J
+MIBenum: 2024
+Source: Windows Japanese.  A further extension of Shift_JIS
+        to include NEC special characters (Row 13), NEC
+        selection of IBM extensions (Rows 89 to 92), and IBM
+        extensions (Rows 115 to 119).  The CCS's are
+        JIS X0201:1997, JIS X0208:1997, and these extensions.
+        This charset can be used for the top-level media type "text",
+        but it is of limited or specialized use (see RFC2278).
+        PCL Symbol Set id: 19K
+Alias: csWindows31J
+
+Name: GB2312  (preferred MIME name)
+MIBenum: 2025
+Source: Chinese for People's Republic of China (PRC) mixed one byte, 
+        two byte set: 
+          20-7E = one byte ASCII 
+          A1-FE = two byte PRC Kanji 
+        See GB 2312-80 
+        PCL Symbol Set Id: 18C
+Alias: csGB2312
+
+Name: Big5  (preferred MIME name)
+MIBenum: 2026
+Source: Chinese for Taiwan Multi-byte set.
+        PCL Symbol Set Id: 18T
+Alias: csBig5
+
+Name: windows-1250
+MIBenum: 2250
+Source: Microsoft  (see ../character-set-info/windows-1250) [Lazhintseva]
+Alias: None
+
+Name: windows-1251
+MIBenum: 2251
+Source: Microsoft  (see ../character-set-info/windows-1251) [Lazhintseva]
+Alias: None
+
+Name: windows-1252
+MIBenum: 2252
+Source: Microsoft  (see ../character-set-info/windows-1252)       [Wendt]
+Alias: None
+
+Name: windows-1253
+MIBenum: 2253
+Source: Microsoft  (see ../character-set-info/windows-1253) [Lazhintseva]
+Alias: None
+
+Name: windows-1254
+MIBenum: 2254
+Source: Microsoft  (see ../character-set-info/windows-1254) [Lazhintseva]
+Alias: None
+
+Name: windows-1255
+MIBenum: 2255
+Source: Microsoft  (see ../character-set-info/windows-1255) [Lazhintseva]
+Alias: None
+
+Name: windows-1256
+MIBenum: 2256
+Source: Microsoft  (see ../character-set-info/windows-1256) [Lazhintseva]
+Alias: None 
+
+Name: windows-1257
+MIBenum: 2257
+Source: Microsoft  (see ../character-set-info/windows-1257) [Lazhintseva]
+Alias: None
+
+Name: windows-1258
+MIBenum: 2258
+Source: Microsoft  (see ../character-set-info/windows-1258) [Lazhintseva]
+Alias: None
+
+Name: TIS-620
+MIBenum: 2259
+Source: Thai Industrial Standards Institute (TISI)	     [Tantsetthi]
+
+Name: HZ-GB-2312
+MIBenum: 2085
+Source: RFC 1842, RFC 1843                              [RFC1842, RFC1843]
+
+
+REFERENCES
+
+[RFC1345]  Simonsen, K., "Character Mnemonics & Character Sets",
+           RFC 1345, Rationel Almen Planlaegning, Rationel Almen
+           Planlaegning, June 1992.
+
+[RFC1428]  Vaudreuil, G., "Transition of Internet Mail from
+           Just-Send-8 to 8bit-SMTP/MIME", RFC1428, CNRI, February
+           1993.
+
+[RFC1456]  Vietnamese Standardization Working Group, "Conventions for
+           Encoding the Vietnamese Language VISCII: VIetnamese 
+           Standard Code for Information Interchange VIQR: VIetnamese 
+           Quoted-Readable Specification Revision 1.1", RFC 1456, May
+           1993.
+
+[RFC1468]  Murai, J., Crispin, M., and E. van der Poel, "Japanese
+           Character Encoding for Internet Messages", RFC 1468,
+           Keio University, Panda Programming, June 1993.
+
+[RFC1489]  Chernov, A., "Registration of a Cyrillic Character Set",
+           RFC1489, RELCOM Development Team, July 1993. 
+
+[RFC1554]  Ohta, M., and K. Handa, "ISO-2022-JP-2: Multilingual
+           Extension of ISO-2022-JP", RFC1554, Tokyo Institute of
+           Technology, ETL, December 1993. 
+
+[RFC1556]  Nussbacher, H., "Handling of Bi-directional Texts in MIME",
+           RFC1556, Israeli Inter-University, December 1993. 
+
+[RFC1557]  Choi, U., Chon, K., and H. Park, "Korean Character Encoding
+           for Internet Messages", KAIST, Solvit Chosun Media,
+           December 1993.
+
+[RFC1641]  Goldsmith, D., and M. Davis, "Using Unicode with MIME",
+           RFC1641, Taligent, Inc., July 1994. 
+
+[RFC1642]  Goldsmith, D., and M. Davis, "UTF-7", RFC1642, Taligent,
+           Inc., July 1994.
+
+[RFC1815]  Ohta, M., "Character Sets ISO-10646 and ISO-10646-J-1",
+           RFC 1815, Tokyo Institute of Technology, July 1995.
+
+
+[Adobe]    Adobe Systems Incorporated, PostScript Language Reference
+           Manual, second edition, Addison-Wesley Publishing Company,
+           Inc., 1990.
+
+[HP-PCL5]  Hewlett-Packard Company, "HP PCL 5 Comparison Guide", 
+           (P/N 5021-0329) pp B-13, 1996.
+
+[IBM-CIDT] IBM Corporation, "ABOUT TYPE: IBM's Technical Reference
+           for Core Interchange Digitized Type", Publication number
+           S544-3708-01
+
+[RFC1842]  Wei, Y., J. Li, and Y. Jiang, "ASCII Printable
+           Characters-Based Chinese Character Encoding for Internet
+           Messages", RFC 1842, Harvard University, Rice University,
+           University of Maryland, August 1995.
+
+[RFC1843]  Lee, F., "HZ - A Data Format for Exchanging Files of
+           Arbitrarily Mixed Chinese and ASCII Characters", RFC 1843,
+           Stanford University, August 1995.
+
+[RFC2152]  Goldsmith, D., M. Davis, "UTF-7: A Mail-Safe Transformation
+	   Format of Unicode", RFC 2152, Apple Computer, Inc.,
+	   Taligent Inc., May 1997.
+
+[RFC2279]  Yergeau, F., "UTF-8, A Transformation Format of ISO 10646",
+           RFC 2279, Alis Technologies, January, 1998.
+
+[RFC2781]  Hoffman, P., Yergeau, F., "UTF-16, an encoding of ISO 10646",
+           RFC 2781, February 2000.
+
+
+PEOPLE
+
+[KXS2] Keld Simonsen <Keld.Simonsen at dkuug.dk>
+
+[Choi] Woohyong Choi <whchoi at cosmos.kaist.ac.kr>
+
+[Lazhintseva] Katya Lazhintseva, <katyal at MICROSOFT.com>, May 1996.
+
+[Mahdi] Tamer Mahdi, <tamer at ca.ibm.com>, August 2000.
+
+[Murai] Jun Murai <jun at wide.ad.jp>
+
+[Ohta] Masataka Ohta, <mohta at cc.titech.ac.jp>, July 1995.
+
+[Nussbacher] Hank Nussbacher, <hank at vm.tau.ac.il>
+
+[Pond] Rick Pond, <rickpond at vnet.ibm.com> March 1997.
+
+[Scherer] Markus Scherer, <markus.scherer at jtcsv.com>, August 2000.
+
+[Simonsen] Keld Simonsen, <Keld.Simonsen at rap.dk>, August 2000.
+
+[Tantsetthi] Trin Tantsetthi, <trin at mozart.inet.co.th>, September 1998.
+
+[Tumasonis] Vladas Tumasonis, <vladas.tumasonis at maf.vu.lt>, August 2000.
+
+[Wendt] Chris Wendt, <christw at microsoft.com>, December 1999.
+
+[Yick] Nicky Yick, <cliac at itsd.gcn.gov.hk>, October 2000.
+
+[]
+
+
+
+
+
+
+
diff --git a/WebCore/src/kwq/make-charset-table.pl b/WebCore/src/kwq/make-charset-table.pl
new file mode 100755
index 0000000..ef05900
--- /dev/null
+++ b/WebCore/src/kwq/make-charset-table.pl
@@ -0,0 +1,111 @@
+#!/usr/bin/perl -w
+
+use strict;
+
+
+my $MAC_SUPPORTED_ONLY = 1;
+
+my $canonical_name;
+my $mib_enum;
+my @aliases;
+my %name_to_mac_encoding;
+my %used_mac_encodings;
+
+my $already_wrote_one = 0;
+
+
+
+sub emit_prefix
+{
+    print TABLE "static CharsetEntry table[] = {\n";
+}
+
+sub emit_suffix
+{
+    print TABLE ",\n    {NULL,\n     -1,\n     kCFStringEncodingInvalidId}\n};\n";
+}
+
+
+sub emit_output 
+{
+    my ($canonical_name, $mib_enum, @aliases) = @_;
+    
+    # Bug in the August 23 version of IANA's character-sets document
+    if ($canonical_name eq "ISO-10646-J-1" && ! $mib_enum) {
+	$mib_enum = "1004";
+    }
+
+    my $mac_string_encoding = "kCFStringEncodingInvalidId";
+
+    foreach my $name ($canonical_name, @aliases) {
+	$name =~ tr/A-Z/a-z/;
+	if ($name_to_mac_encoding{$name}) {
+	    $mac_string_encoding = $name_to_mac_encoding{$name};
+	    $used_mac_encodings{$name} = $name;
+	}
+    }
+
+    unless ($MAC_SUPPORTED_ONLY && $mac_string_encoding eq "kCFStringEncodingInvalidId") {
+	foreach my $name ($canonical_name, @aliases) {
+	    print TABLE ",\n" if ($already_wrote_one);
+            print TABLE '    {"' . ${name} . '",' . "\n";
+            print TABLE "     " . ${mib_enum} . ",\n";
+            print TABLE "     " . ${mac_string_encoding} . "}";
+            $already_wrote_one = 1;
+        }
+    }
+}
+
+
+sub process_mac_encodings {
+    while (<MAC_ENCODINGS>) {
+	chomp;
+	if (my ($id, $name) = /([0-9]*):(.*)/) {
+	    $name =~ tr/A-Z/a-z/;
+	    $name_to_mac_encoding{$name} = $id;
+	}
+    }
+}
+
+sub process_iana_charsets {
+    while (<CHARSETS>) {
+	chomp;
+	if ((my $new_canonical_name) = /Name: ([^ \t]*).*/) {
+	    emit_output $canonical_name, $mib_enum, @aliases if ($canonical_name);
+	    
+	    $canonical_name = $new_canonical_name;
+	    $mib_enum = "";
+	    @aliases = ();
+	} elsif ((my $new_mib_enum) = /MIBenum: ([^ \t]*).*/) {
+	    $mib_enum = $new_mib_enum;
+	} elsif ((my $new_alias) = /Alias: ([^ \t]*).*/) {
+	    push @aliases, $new_alias unless ($new_alias eq "None");
+	}
+    }
+}
+
+sub emit_unused_mac_encodings {
+    foreach my $name (keys %name_to_mac_encoding) {
+	if (! $used_mac_encodings{$name}) {
+	    print TABLE ",\n" if ($already_wrote_one);
+	    print TABLE '    {"' . ${name} . '",' . "\n";
+	    print TABLE "     " . -1 . ",\n";
+            print TABLE "     " . $name_to_mac_encoding{$name} . "}";
+            $already_wrote_one = 1;
+	}
+    }
+}
+
+# Program body
+
+open CHARSETS, "<" . $ARGV[0];
+open MAC_ENCODINGS, "<" . $ARGV[1];
+open TABLE, ">" . $ARGV[2];
+
+emit_prefix;
+process_mac_encodings;
+process_iana_charsets;
+emit_unused_mac_encodings;
+emit_suffix;
+
+close TABLE;
diff --git a/WebCore/src/kwq/make-mac-encodings.c b/WebCore/src/kwq/make-mac-encodings.c
new file mode 100644
index 0000000..a07888b
--- /dev/null
+++ b/WebCore/src/kwq/make-mac-encodings.c
@@ -0,0 +1,45 @@
+
+
+#include <CoreFoundation/CoreFoundation.h>
+
+
+static void
+usage(const char *program)
+{
+  printf("Usage: %s OUTFILE\n", program);
+  exit(1);
+}
+
+int
+main (int argc, char **argv)
+{
+  const CFStringEncoding *all_encodings;
+  const CFStringEncoding *p;
+  CFStringRef name;
+  char cname[2048];
+  FILE *output;
+
+  if (argc != 2) {
+    usage(argv[0]);
+  }
+  
+  output = fopen (argv[1], "w");
+
+  if (output == NULL) {
+    printf ("Cannot open file `%s'\n", argv[1]);
+  }
+
+  all_encodings = CFStringGetListOfAvailableEncodings();
+
+  for (p = all_encodings; *p != kCFStringEncodingInvalidId; p++) {
+    name = CFStringConvertEncodingToIANACharSetName(*p);
+    /* All IANA encoding names must be US-ASCII */
+    if (name != NULL) {
+      CFStringGetCString(name, cname, 2048, kCFStringEncodingASCII);
+      fprintf(output,"%ld:%s\n", *p, cname);
+    } else {
+      printf("Warning: nameless encoding %ld\n", *p);
+    }
+  }
+  return 0;
+}
diff --git a/WebCore/src/kwq/qt/qstring.h b/WebCore/src/kwq/qt/qstring.h
index 3c972ef..8bd8fe9 100644
--- a/WebCore/src/kwq/qt/qstring.h
+++ b/WebCore/src/kwq/qt/qstring.h
@@ -340,6 +340,7 @@ public:
 #endif
     static QString fromStringWithEncoding(const char *, int, CFStringEncoding);
     static QString fromCFMutableString(CFMutableStringRef);
+    static QString fromCFString(CFStringRef);
 
     // constructors, copy constructors, and destructors ------------------------
 
diff --git a/WebKit/ChangeLog b/WebKit/ChangeLog
index 9f2c0ce..a114f88 100644
--- a/WebKit/ChangeLog
+++ b/WebKit/ChangeLog
@@ -1,4 +1,36 @@
-2001-12-13  Maciej Stachowiak  <mjs at apple.com
+2001-12-13  Maciej Stachowiak  <mjs at apple.com>
+
+	Warning fixes and support to pass the http headers along with
+	cache data items
+
+	* Cache.subproj/NSURICacheData.h, Cache.subproj/NSURICacheData.m:
+	(+[NSURICacheData
+	dataWithURL:status:error:headers:data:size:notificationString:userData:],
+	-[NSURICacheData
+	initWithURL:status:error:headers:data:size:notificationString:userData:]),
+	-[NSURICacheData dealloc], -[NSURICacheData error],
+	-[NSURICacheData headers]: 
+	NSURICacheData now carries a copy of the response headers
+	dictionary.
+	* Cache.subproj/NSURICache.m: include "WCURICache.h" to fix warnings.
+	(-[NSURICache requestWithURL:requestor:userData:]): 
+	Handle headers in CacheData.
+	* Cache.subproj/NSURILoad.h, Cache.subproj/NSURILoad.m:
+	(-[NSURILoad __NSURILoadReadStreamCallback:event:data:],
+	-[NSURILoad headers], -[NSURILoad dealloc], -[NSURILoad done]): 
+	An NSURILoad object now carries the response headers associated
+	with its connection, if any.
+
+	* History.subproj/WKBackForwardList.m: include WCBackForwardList.h
+	to fix warning.
+	* History.subproj/WKURIEntry.m: include WCURIEntry.h to fix
+	warning.
+	* Misc.subproj/WebKitDebug.h: Use (void) for C prototypes, not ().
+	* WebView.subproj/NSWebPageDataSource.mm: (+[NSWebPageDataSource
+	initialize]): Remove unused variable to fix warning.
+	* WebKit.pbproj/project.pbxproj: Enable many warning flags and -Werror
+
+2001-12-13  Maciej Stachowiak  <mjs at apple.com>
 
 	* WebView.subproj/WKWebController.h: Defined initial version of
 	WKAuthenticationHandler interface, and associated
diff --git a/WebKit/ChangeLog-2002-12-03 b/WebKit/ChangeLog-2002-12-03
index 9f2c0ce..a114f88 100644
--- a/WebKit/ChangeLog-2002-12-03
+++ b/WebKit/ChangeLog-2002-12-03
@@ -1,4 +1,36 @@
-2001-12-13  Maciej Stachowiak  <mjs at apple.com
+2001-12-13  Maciej Stachowiak  <mjs at apple.com>
+
+	Warning fixes and support to pass the http headers along with
+	cache data items
+
+	* Cache.subproj/NSURICacheData.h, Cache.subproj/NSURICacheData.m:
+	(+[NSURICacheData
+	dataWithURL:status:error:headers:data:size:notificationString:userData:],
+	-[NSURICacheData
+	initWithURL:status:error:headers:data:size:notificationString:userData:]),
+	-[NSURICacheData dealloc], -[NSURICacheData error],
+	-[NSURICacheData headers]: 
+	NSURICacheData now carries a copy of the response headers
+	dictionary.
+	* Cache.subproj/NSURICache.m: include "WCURICache.h" to fix warnings.
+	(-[NSURICache requestWithURL:requestor:userData:]): 
+	Handle headers in CacheData.
+	* Cache.subproj/NSURILoad.h, Cache.subproj/NSURILoad.m:
+	(-[NSURILoad __NSURILoadReadStreamCallback:event:data:],
+	-[NSURILoad headers], -[NSURILoad dealloc], -[NSURILoad done]): 
+	An NSURILoad object now carries the response headers associated
+	with its connection, if any.
+
+	* History.subproj/WKBackForwardList.m: include WCBackForwardList.h
+	to fix warning.
+	* History.subproj/WKURIEntry.m: include WCURIEntry.h to fix
+	warning.
+	* Misc.subproj/WebKitDebug.h: Use (void) for C prototypes, not ().
+	* WebView.subproj/NSWebPageDataSource.mm: (+[NSWebPageDataSource
+	initialize]): Remove unused variable to fix warning.
+	* WebKit.pbproj/project.pbxproj: Enable many warning flags and -Werror
+
+2001-12-13  Maciej Stachowiak  <mjs at apple.com>
 
 	* WebView.subproj/WKWebController.h: Defined initial version of
 	WKAuthenticationHandler interface, and associated
diff --git a/WebKit/History.subproj/IFBackForwardList.m b/WebKit/History.subproj/IFBackForwardList.m
index e991d9a..51a166a 100644
--- a/WebKit/History.subproj/IFBackForwardList.m
+++ b/WebKit/History.subproj/IFBackForwardList.m
@@ -7,10 +7,11 @@
 //
 
 #import "WKBackForwardList.h"
+#import "WCBackForwardList.h"
 
 // *** Function to access WCURICache singleton
 
-id <WCBackForwardList> WCCreateBackForwardList()
+id <WCBackForwardList> WCCreateBackForwardList(void)
 {
     return [[WKBackForwardList alloc] init];
 }
diff --git a/WebKit/History.subproj/IFURIEntry.m b/WebKit/History.subproj/IFURIEntry.m
index 955c954..0ad4259 100644
--- a/WebKit/History.subproj/IFURIEntry.m
+++ b/WebKit/History.subproj/IFURIEntry.m
@@ -8,10 +8,11 @@
 
 #import "WKURIEntry.h"
 #import "WebKitReallyPrivate.h"
+#import "WCURIEntry.h"
 
 // *** Function to access WCURICache singleton
 
-id <WCURIEntry> WCCreateURIEntry()
+id <WCURIEntry> WCCreateURIEntry(void)
 {
     return [[WKURIEntry alloc] init];
 }
diff --git a/WebKit/History.subproj/WKBackForwardList.m b/WebKit/History.subproj/WKBackForwardList.m
index e991d9a..51a166a 100644
--- a/WebKit/History.subproj/WKBackForwardList.m
+++ b/WebKit/History.subproj/WKBackForwardList.m
@@ -7,10 +7,11 @@
 //
 
 #import "WKBackForwardList.h"
+#import "WCBackForwardList.h"
 
 // *** Function to access WCURICache singleton
 
-id <WCBackForwardList> WCCreateBackForwardList()
+id <WCBackForwardList> WCCreateBackForwardList(void)
 {
     return [[WKBackForwardList alloc] init];
 }
diff --git a/WebKit/History.subproj/WKURIEntry.m b/WebKit/History.subproj/WKURIEntry.m
index 955c954..0ad4259 100644
--- a/WebKit/History.subproj/WKURIEntry.m
+++ b/WebKit/History.subproj/WKURIEntry.m
@@ -8,10 +8,11 @@
 
 #import "WKURIEntry.h"
 #import "WebKitReallyPrivate.h"
+#import "WCURIEntry.h"
 
 // *** Function to access WCURICache singleton
 
-id <WCURIEntry> WCCreateURIEntry()
+id <WCURIEntry> WCCreateURIEntry(void)
 {
     return [[WKURIEntry alloc] init];
 }
diff --git a/WebKit/History.subproj/WebBackForwardList.m b/WebKit/History.subproj/WebBackForwardList.m
index e991d9a..51a166a 100644
--- a/WebKit/History.subproj/WebBackForwardList.m
+++ b/WebKit/History.subproj/WebBackForwardList.m
@@ -7,10 +7,11 @@
 //
 
 #import "WKBackForwardList.h"
+#import "WCBackForwardList.h"
 
 // *** Function to access WCURICache singleton
 
-id <WCBackForwardList> WCCreateBackForwardList()
+id <WCBackForwardList> WCCreateBackForwardList(void)
 {
     return [[WKBackForwardList alloc] init];
 }
diff --git a/WebKit/History.subproj/WebHistoryItem.m b/WebKit/History.subproj/WebHistoryItem.m
index 955c954..0ad4259 100644
--- a/WebKit/History.subproj/WebHistoryItem.m
+++ b/WebKit/History.subproj/WebHistoryItem.m
@@ -8,10 +8,11 @@
 
 #import "WKURIEntry.h"
 #import "WebKitReallyPrivate.h"
+#import "WCURIEntry.h"
 
 // *** Function to access WCURICache singleton
 
-id <WCURIEntry> WCCreateURIEntry()
+id <WCURIEntry> WCCreateURIEntry(void)
 {
     return [[WKURIEntry alloc] init];
 }
diff --git a/WebKit/Misc.subproj/WebKitDebug.h b/WebKit/Misc.subproj/WebKitDebug.h
index 66301fc..99dde47 100644
--- a/WebKit/Misc.subproj/WebKitDebug.h
+++ b/WebKit/Misc.subproj/WebKitDebug.h
@@ -18,7 +18,7 @@
 #define WEBKIT_LOG_ALL			0xffffffff
 
 void WebKitSetLogLevel(int mask);
-unsigned int WebKitGetLogLevel();
+unsigned int WebKitGetLogLevel(void);
 void WebKitDebug(const char *format, ...);
 void WebKitDebugAtLevel(unsigned int level, const char *format, ...);
 void WebKitLog(NSString *format, ...);
diff --git a/WebKit/WebKit.pbproj/project.pbxproj b/WebKit/WebKit.pbproj/project.pbxproj
index fdeb761..0a60a58 100644
--- a/WebKit/WebKit.pbproj/project.pbxproj
+++ b/WebKit/WebKit.pbproj/project.pbxproj
@@ -124,6 +124,7 @@
 				HEADER_SEARCH_PATHS = ../WebCore/include;
 				INSTALL_PATH = "@executable_path/../Frameworks";
 				LIBRARY_SEARCH_PATHS = "";
+				OTHER_CFLAGS = "-Wall -Werror -Wchar-subscripts -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wcast-align -Wsign-compare";
 				PRODUCT_NAME = WebKit;
 				SECTORDER_FLAGS = "";
 				WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas";
diff --git a/WebKit/WebView.subproj/NSWebPageDataSource.mm b/WebKit/WebView.subproj/NSWebPageDataSource.mm
index 0bae512..d322954 100644
--- a/WebKit/WebView.subproj/NSWebPageDataSource.mm
+++ b/WebKit/WebView.subproj/NSWebPageDataSource.mm
@@ -7,7 +7,6 @@
 
 + (void)initialize {
 
-    NSAutoreleasePool *localPool;
     NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
     NSArray *fontSizeArray = [NSArray arrayWithObjects:@"7", @"8", @"9", @"10", @"12", @"13", @"14", @"16", nil];
     NSNumber *pluginsEnabled = [NSNumber numberWithBool:TRUE];

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list