#!/usr/bin/env python """ CharsetMapping.py $Id: CharsetMapping.py,v 1.5 2002/05/18 10:28:24 nordstrom Exp $ This file contain two arrays, the first "NamedCharsets" map charset names to the right MIBenum values, the second "MIBenumNames" map the MIBenum values to charset names. If you call it as a script you could specify a textfile contain charset infos (as found on http://www.iana.org/assignments/character-sets) as a parameter and the scrip parse this file and create the two arrys. Copyright 2001 by Dirk Heiser Distributable under the GNU General Public License Version 2 or newer. """ import getopt, os, sys, re, string ############### START PASTE HERE ##################################### NamedCharsets = { 'tactis' : 2259, 'utf8' : 106, 'iso-646dk' : 99, 'utf' : 106, 'sjis' : 17, 'jis7' : 39, 'iso8859-15' : 111, 'eucjp' : 18, 'euccn' : 2025, 'euckr' : 38, 'iso8859-1' : 4, 'iso8859-2' : 5, 'iso8859-3' : 6, 'iso8859-4' : 7, 'iso8859-5' : 8, 'iso8859-6' : 9, 'iso8859-7' : 10, 'iso8859-8' : 11, 'euctw' : 2026, 'ansi_x3.4-1968' : 3, 'iso-ir-6' : 3, 'ansi_x3.4-1986' : 3, 'iso_646.irv:1991' : 3, 'ascii' : 3, 'iso646-us' : 3, 'us-ascii' : 3, 'us' : 3, 'ibm367' : 3, 'cp367' : 3, 'csascii' : 3, 'iso-10646-utf-1' : 27, 'csiso10646utf1' : 27, 'iso_646.basic:1983' : 28, 'ref' : 28, 'csiso646basic1983' : 28, 'invariant' : 29, 'csinvariant' : 29, 'iso_646.irv:1983' : 30, 'iso-ir-2' : 30, 'irv' : 30, 'csiso2intlrefversion' : 30, 'bs_4730' : 20, 'iso-ir-4' : 20, 'iso646-gb' : 20, 'gb' : 20, 'uk' : 20, 'csiso4unitedkingdom' : 20, 'nats-sefi' : 31, 'iso-ir-8-1' : 31, 'csnatssefi' : 31, 'nats-sefi-add' : 32, 'iso-ir-8-2' : 32, 'csnatssefiadd' : 32, 'nats-dano' : 33, 'iso-ir-9-1' : 33, 'csnatsdano' : 33, 'nats-dano-add' : 34, 'iso-ir-9-2' : 34, 'csnatsdanoadd' : 34, 'sen_850200_b' : 35, 'iso-ir-10' : 35, 'fi' : 35, 'iso646-fi' : 35, 'iso646-se' : 35, 'se' : 35, 'csiso10swedish' : 35, 'sen_850200_c' : 21, 'iso-ir-11' : 21, 'iso646-se2' : 21, 'se2' : 21, 'csiso11swedishfornames' : 21, 'ks_c_5601-1987' : 36, 'iso-ir-149' : 36, 'ks_c_5601-1989' : 36, 'ksc_5601' : 36, 'korean' : 36, 'csksc56011987' : 36, 'iso-2022-kr' : 37, 'csiso2022kr' : 37, 'euc-kr' : 38, 'cseuckr' : 38, 'iso-2022-jp' : 39, 'csiso2022jp' : 39, 'iso-2022-jp-2' : 40, 'csiso2022jp2' : 40, 'iso-2022-cn' : 104, 'iso-2022-cn-ext' : 105, 'jis_c6220-1969-jp' : 41, 'jis_c6220-1969' : 41, 'iso-ir-13' : 41, 'katakana' : 41, 'x0201-7' : 41, 'csiso13jisc6220jp' : 41, 'jis_c6220-1969-ro' : 42, 'iso-ir-14' : 42, 'jp' : 42, 'iso646-jp' : 42, 'csiso14jisc6220ro' : 42, 'it' : 22, 'iso-ir-15' : 22, 'iso646-it' : 22, 'csiso15italian' : 22, 'pt' : 43, 'iso-ir-16' : 43, 'iso646-pt' : 43, 'csiso16portuguese' : 43, 'es' : 23, 'iso-ir-17' : 23, 'iso646-es' : 23, 'csiso17spanish' : 23, 'greek7-old' : 44, 'iso-ir-18' : 44, 'csiso18greek7old' : 44, 'latin-greek' : 45, 'iso-ir-19' : 45, 'csiso19latingreek' : 45, 'din_66003' : 24, 'iso-ir-21' : 24, 'de' : 24, 'iso646-de' : 24, 'csiso21german' : 24, 'nf_z_62-010_(1973)' : 46, 'iso-ir-25' : 46, 'iso646-fr1' : 46, 'csiso25french' : 46, 'latin-greek-1' : 47, 'iso-ir-27' : 47, 'csiso27latingreek1' : 47, 'iso_5427' : 48, 'iso-ir-37' : 48, 'csiso5427cyrillic' : 48, 'jis_c6226-1978' : 49, 'iso-ir-42' : 49, 'csiso42jisc62261978' : 49, 'bs_viewdata' : 50, 'iso-ir-47' : 50, 'csiso47bsviewdata' : 50, 'inis' : 51, 'iso-ir-49' : 51, 'csiso49inis' : 51, 'inis-8' : 52, 'iso-ir-50' : 52, 'csiso50inis8' : 52, 'inis-cyrillic' : 53, 'iso-ir-51' : 53, 'csiso51iniscyrillic' : 53, 'iso_5427:1981' : 54, 'iso-ir-54' : 54, 'iso5427cyrillic1981' : 54, 'iso_5428:1980' : 55, 'iso-ir-55' : 55, 'csiso5428greek' : 55, 'gb_1988-80' : 56, 'iso-ir-57' : 56, 'cn' : 56, 'iso646-cn' : 56, 'csiso57gb1988' : 56, 'gb_2312-80' : 57, 'iso-ir-58' : 57, 'chinese' : 57, 'csiso58gb231280' : 57, 'ns_4551-1' : 25, 'iso-ir-60' : 25, 'iso646-no' : 25, 'no' : 25, 'csiso60danishnorwegian' : 25, 'csiso60norwegian1' : 25, 'ns_4551-2' : 58, 'iso646-no2' : 58, 'iso-ir-61' : 58, 'no2' : 58, 'csiso61norwegian2' : 58, 'nf_z_62-010' : 26, 'iso-ir-69' : 26, 'iso646-fr' : 26, 'fr' : 26, 'csiso69french' : 26, 'videotex-suppl' : 59, 'iso-ir-70' : 59, 'csiso70videotexsupp1' : 59, 'pt2' : 60, 'iso-ir-84' : 60, 'iso646-pt2' : 60, 'csiso84portuguese2' : 60, 'es2' : 61, 'iso-ir-85' : 61, 'iso646-es2' : 61, 'csiso85spanish2' : 61, 'msz_7795.3' : 62, 'iso-ir-86' : 62, 'iso646-hu' : 62, 'hu' : 62, 'csiso86hungarian' : 62, 'jis_c6226-1983' : 63, 'iso-ir-87' : 63, 'x0208' : 63, 'jis_x0208-1983' : 63, 'csiso87jisx0208' : 63, 'greek7' : 64, 'iso-ir-88' : 64, 'csiso88greek7' : 64, 'asmo_449' : 65, 'iso_9036' : 65, 'arabic7' : 65, 'iso-ir-89' : 65, 'csiso89asmo449' : 65, 'iso-ir-90' : 66, 'csiso90' : 66, 'jis_c6229-1984-a' : 67, 'iso-ir-91' : 67, 'jp-ocr-a' : 67, 'csiso91jisc62291984a' : 67, 'jis_c6229-1984-b' : 68, 'iso-ir-92' : 68, 'iso646-jp-ocr-b' : 68, 'jp-ocr-b' : 68, 'csiso92jisc62991984b' : 68, 'jis_c6229-1984-b-add' : 69, 'iso-ir-93' : 69, 'jp-ocr-b-add' : 69, 'csiso93jis62291984badd' : 69, 'jis_c6229-1984-hand' : 70, 'iso-ir-94' : 70, 'jp-ocr-hand' : 70, 'csiso94jis62291984hand' : 70, 'jis_c6229-1984-hand-add' : 71, 'iso-ir-95' : 71, 'jp-ocr-hand-add' : 71, 'csiso95jis62291984handadd' : 71, 'jis_c6229-1984-kana' : 72, 'iso-ir-96' : 72, 'csiso96jisc62291984kana' : 72, 'iso_2033-1983' : 73, 'iso-ir-98' : 73, 'e13b' : 73, 'csiso2033' : 73, 'ansi_x3.110-1983' : 74, 'iso-ir-99' : 74, 'csa_t500-1983' : 74, 'naplps' : 74, 'csiso99naplps' : 74, 'iso_8859-1:1987' : 4, 'iso-ir-100' : 4, 'iso_8859-1' : 4, 'iso-8859-1' : 4, 'latin1' : 4, 'l1' : 4, 'ibm819' : 4, 'cp819' : 4, 'csisolatin1' : 4, 'iso_8859-2:1987' : 5, 'iso-ir-101' : 5, 'iso_8859-2' : 5, 'iso-8859-2' : 5, 'latin2' : 5, 'l2' : 5, 'csisolatin2' : 5, 't.61-7bit' : 75, 'iso-ir-102' : 75, 'csiso102t617bit' : 75, 't.61-8bit' : 76, 't.61' : 76, 'iso-ir-103' : 76, 'csiso103t618bit' : 76, 'iso_8859-3:1988' : 6, 'iso-ir-109' : 6, 'iso_8859-3' : 6, 'iso-8859-3' : 6, 'latin3' : 6, 'l3' : 6, 'csisolatin3' : 6, 'iso_8859-4:1988' : 7, 'iso-ir-110' : 7, 'iso_8859-4' : 7, 'iso-8859-4' : 7, 'latin4' : 7, 'l4' : 7, 'csisolatin4' : 7, 'ecma-cyrillic' : 77, 'iso-ir-111' : 77, 'csiso111ecmacyrillic' : 77, 'csa_z243.4-1985-1' : 78, 'iso-ir-121' : 78, 'iso646-ca' : 78, 'csa7-1' : 78, 'ca' : 78, 'csiso121canadian1' : 78, 'csa_z243.4-1985-2' : 79, 'iso-ir-122' : 79, 'iso646-ca2' : 79, 'csa7-2' : 79, 'csiso122canadian2' : 79, 'csa_z243.4-1985-gr' : 80, 'iso-ir-123' : 80, 'csiso123csaz24341985gr' : 80, 'iso_8859-6:1987' : 9, 'iso-ir-127' : 9, 'iso_8859-6' : 9, 'iso-8859-6' : 9, 'ecma-114' : 9, 'asmo-708' : 9, 'arabic' : 9, 'csisolatinarabic' : 9, 'iso_8859-6-e' : 81, 'csiso88596e' : 81, 'iso-8859-6-e' : 81, 'iso_8859-6-i' : 82, 'csiso88596i' : 82, 'iso-8859-6-i' : 82, 'iso_8859-7:1987' : 10, 'iso-ir-126' : 10, 'iso_8859-7' : 10, 'iso-8859-7' : 10, 'elot_928' : 10, 'ecma-118' : 10, 'greek' : 10, 'greek8' : 10, 'csisolatingreek' : 10, 't.101-g2' : 83, 'iso-ir-128' : 83, 'csiso128t101g2' : 83, 'iso_8859-8:1988' : 11, 'iso-ir-138' : 11, 'iso_8859-8' : 11, 'iso-8859-8' : 11, 'hebrew' : 11, 'csisolatinhebrew' : 11, 'iso_8859-8-e' : 84, 'csiso88598e' : 84, 'iso-8859-8-e' : 84, 'iso_8859-8-i' : 85, 'csiso88598i' : 85, 'iso-8859-8-i' : 85, 'csn_369103' : 86, 'iso-ir-139' : 86, 'csiso139csn369103' : 86, 'jus_i.b1.002' : 87, 'iso-ir-141' : 87, 'iso646-yu' : 87, 'js' : 87, 'yu' : 87, 'csiso141jusib1002' : 87, 'iso_6937-2-add' : 14, 'iso-ir-142' : 14, 'csisotextcomm' : 14, 'iec_p27-1' : 88, 'iso-ir-143' : 88, 'csiso143iecp271' : 88, 'iso_8859-5:1988' : 8, 'iso-ir-144' : 8, 'iso_8859-5' : 8, 'iso-8859-5' : 8, 'cyrillic' : 8, 'csisolatincyrillic' : 8, 'jus_i.b1.003-serb' : 89, 'iso-ir-146' : 89, 'serbian' : 89, 'csiso146serbian' : 89, 'jus_i.b1.003-mac' : 90, 'macedonian' : 90, 'iso-ir-147' : 90, 'csiso147macedonian' : 90, 'iso_8859-9:1989' : 12, 'iso-ir-148' : 12, 'iso_8859-9' : 12, 'iso-8859-9' : 12, 'latin5' : 12, 'l5' : 12, 'csisolatin5' : 12, 'greek-ccitt' : 91, 'iso-ir-150' : 91, 'csiso150' : 91, 'csiso150greekccitt' : 91, 'nc_nc00-10:81' : 92, 'cuba' : 92, 'iso-ir-151' : 92, 'iso646-cu' : 92, 'csiso151cuba' : 92, 'iso_6937-2-25' : 93, 'iso-ir-152' : 93, 'csiso6937add' : 93, 'gost_19768-74' : 94, 'st_sev_358-88' : 94, 'iso-ir-153' : 94, 'csiso153gost1976874' : 94, 'iso_8859-supp' : 95, 'iso-ir-154' : 95, 'latin1-2-5' : 95, 'csiso8859supp' : 95, 'iso_10367-box' : 96, 'iso-ir-155' : 96, 'csiso10367box' : 96, 'iso-8859-10' : 13, 'iso-ir-157' : 13, 'l6' : 13, 'iso_8859-10:1992' : 13, 'csisolatin6' : 13, 'latin6' : 13, 'latin-lap' : 97, 'lap' : 97, 'iso-ir-158' : 97, 'csiso158lap' : 97, 'jis_x0212-1990' : 98, 'x0212' : 98, 'iso-ir-159' : 98, 'csiso159jisx02121990' : 98, 'ds_2089' : 99, 'ds2089' : 99, 'iso646-dk' : 99, 'dk' : 99, 'csiso646danish' : 99, 'us-dk' : 100, 'csusdk' : 100, 'dk-us' : 101, 'csdkus' : 101, 'jis_x0201' : 15, 'x0201' : 15, 'cshalfwidthkatakana' : 15, 'ksc5636' : 102, 'iso646-kr' : 102, 'csksc5636' : 102, 'iso-10646-ucs-2' : 1000, 'csunicode' : 1000, 'iso-10646-ucs-4' : 1001, 'csucs4' : 1001, 'dec-mcs' : 2008, 'dec' : 2008, 'csdecmcs' : 2008, 'hp-roman8' : 2004, 'roman8' : 2004, 'r8' : 2004, 'cshproman8' : 2004, 'macintosh' : 2027, 'mac' : 2027, 'csmacintosh' : 2027, 'ibm037' : 2028, 'cp037' : 2028, 'ebcdic-cp-us' : 2028, 'ebcdic-cp-ca' : 2028, 'ebcdic-cp-wt' : 2028, 'ebcdic-cp-nl' : 2028, 'csibm037' : 2028, 'ibm038' : 2029, 'ebcdic-int' : 2029, 'cp038' : 2029, 'csibm038' : 2029, 'ibm273' : 2030, 'cp273' : 2030, 'csibm273' : 2030, 'ibm274' : 2031, 'ebcdic-be' : 2031, 'cp274' : 2031, 'csibm274' : 2031, 'ibm275' : 2032, 'ebcdic-br' : 2032, 'cp275' : 2032, 'csibm275' : 2032, 'ibm277' : 2033, 'ebcdic-cp-dk' : 2033, 'ebcdic-cp-no' : 2033, 'csibm277' : 2033, 'ibm278' : 2034, 'cp278' : 2034, 'ebcdic-cp-fi' : 2034, 'ebcdic-cp-se' : 2034, 'csibm278' : 2034, 'ibm280' : 2035, 'cp280' : 2035, 'ebcdic-cp-it' : 2035, 'csibm280' : 2035, 'ibm281' : 2036, 'ebcdic-jp-e' : 2036, 'cp281' : 2036, 'csibm281' : 2036, 'ibm284' : 2037, 'cp284' : 2037, 'ebcdic-cp-es' : 2037, 'csibm284' : 2037, 'ibm285' : 2038, 'cp285' : 2038, 'ebcdic-cp-gb' : 2038, 'csibm285' : 2038, 'ibm290' : 2039, 'cp290' : 2039, 'ebcdic-jp-kana' : 2039, 'csibm290' : 2039, 'ibm297' : 2040, 'cp297' : 2040, 'ebcdic-cp-fr' : 2040, 'csibm297' : 2040, 'ibm420' : 2041, 'cp420' : 2041, 'ebcdic-cp-ar1' : 2041, 'csibm420' : 2041, 'ibm423' : 2042, 'cp423' : 2042, 'ebcdic-cp-gr' : 2042, 'csibm423' : 2042, 'ibm424' : 2043, 'cp424' : 2043, 'ebcdic-cp-he' : 2043, 'csibm424' : 2043, 'ibm437' : 2011, 'cp437' : 2011, '437' : 2011, 'cspc8codepage437' : 2011, 'ibm500' : 2044, 'cp500' : 2044, 'ebcdic-cp-be' : 2044, 'ebcdic-cp-ch' : 2044, 'csibm500' : 2044, 'ibm775' : 2087, 'cp775' : 2087, 'cspc775baltic' : 2087, 'ibm850' : 2009, 'cp850' : 2009, '850' : 2009, 'cspc850multilingual' : 2009, 'ibm851' : 2045, 'cp851' : 2045, '851' : 2045, 'csibm851' : 2045, 'ibm852' : 2010, 'cp852' : 2010, '852' : 2010, 'cspcp852' : 2010, 'ibm855' : 2046, 'cp855' : 2046, '855' : 2046, 'csibm855' : 2046, 'ibm857' : 2047, 'cp857' : 2047, '857' : 2047, 'csibm857' : 2047, 'ibm860' : 2048, 'cp860' : 2048, '860' : 2048, 'csibm860' : 2048, 'ibm861' : 2049, 'cp861' : 2049, '861' : 2049, 'cp-is' : 2049, 'csibm861' : 2049, 'ibm862' : 2013, 'cp862' : 2013, '862' : 2013, 'cspc862latinhebrew' : 2013, 'ibm863' : 2050, 'cp863' : 2050, '863' : 2050, 'csibm863' : 2050, 'ibm864' : 2051, 'cp864' : 2051, 'csibm864' : 2051, 'ibm865' : 2052, 'cp865' : 2052, '865' : 2052, 'csibm865' : 2052, 'ibm866' : 2086, 'cp866' : 2086, '866' : 2086, 'csibm866' : 2086, 'ibm868' : 2053, 'cp868' : 2053, 'cp-ar' : 2053, 'csibm868' : 2053, 'ibm869' : 2054, 'cp869' : 2054, '869' : 2054, 'cp-gr' : 2054, 'csibm869' : 2054, 'ibm870' : 2055, 'cp870' : 2055, 'ebcdic-cp-roece' : 2055, 'ebcdic-cp-yu' : 2055, 'csibm870' : 2055, 'ibm871' : 2056, 'cp871' : 2056, 'ebcdic-cp-is' : 2056, 'csibm871' : 2056, 'ibm880' : 2057, 'cp880' : 2057, 'ebcdic-cyrillic' : 2057, 'csibm880' : 2057, 'ibm891' : 2058, 'cp891' : 2058, 'csibm891' : 2058, 'ibm903' : 2059, 'cp903' : 2059, 'csibm903' : 2059, 'ibm904' : 2060, 'cp904' : 2060, '904' : 2060, 'csibbm904' : 2060, 'ibm905' : 2061, 'cp905' : 2061, 'ebcdic-cp-tr' : 2061, 'csibm905' : 2061, 'ibm918' : 2062, 'cp918' : 2062, 'ebcdic-cp-ar2' : 2062, 'csibm918' : 2062, 'ibm1026' : 2063, 'cp1026' : 2063, 'csibm1026' : 2063, 'ebcdic-at-de' : 2064, 'csibmebcdicatde' : 2064, 'ebcdic-at-de-a' : 2065, 'csebcdicatdea' : 2065, 'ebcdic-ca-fr' : 2066, 'csebcdiccafr' : 2066, 'ebcdic-dk-no' : 2067, 'csebcdicdkno' : 2067, 'ebcdic-dk-no-a' : 2068, 'csebcdicdknoa' : 2068, 'ebcdic-fi-se' : 2069, 'csebcdicfise' : 2069, 'ebcdic-fi-se-a' : 2070, 'csebcdicfisea' : 2070, 'ebcdic-fr' : 2071, 'csebcdicfr' : 2071, 'ebcdic-it' : 2072, 'csebcdicit' : 2072, 'ebcdic-pt' : 2073, 'csebcdicpt' : 2073, 'ebcdic-es' : 2074, 'csebcdices' : 2074, 'ebcdic-es-a' : 2075, 'csebcdicesa' : 2075, 'ebcdic-es-s' : 2076, 'csebcdicess' : 2076, 'ebcdic-uk' : 2077, 'csebcdicuk' : 2077, 'ebcdic-us' : 2078, 'csebcdicus' : 2078, 'unknown-8bit' : 2079, 'csunknown8bit' : 2079, 'mnemonic' : 2080, 'csmnemonic' : 2080, 'mnem' : 2081, 'csmnem' : 2081, 'viscii' : 2082, 'csviscii' : 2082, 'viqr' : 2083, 'csviqr' : 2083, 'koi8-r' : 2084, 'cskoi8r' : 2084, 'koi8-u' : 2088, 'ibm00858' : 2089, 'ccsid00858' : 2089, 'cp00858' : 2089, 'pc-multilingual-850+euro' : 2089, 'ibm00924' : 2090, 'ccsid00924' : 2090, 'cp00924' : 2090, 'ebcdic-latin9--euro' : 2090, 'ibm01140' : 2091, 'ccsid01140' : 2091, 'cp01140' : 2091, 'ebcdic-us-37+euro' : 2091, 'ibm01141' : 2092, 'ccsid01141' : 2092, 'cp01141' : 2092, 'ebcdic-de-273+euro' : 2092, 'ibm01142' : 2093, 'ccsid01142' : 2093, 'cp01142' : 2093, 'ebcdic-dk-277+euro' : 2093, 'ebcdic-no-277+euro' : 2093, 'ibm01143' : 2094, 'ccsid01143' : 2094, 'cp01143' : 2094, 'ebcdic-fi-278+euro' : 2094, 'ebcdic-se-278+euro' : 2094, 'ibm01144' : 2095, 'ccsid01144' : 2095, 'cp01144' : 2095, 'ebcdic-it-280+euro' : 2095, 'ibm01145' : 2096, 'ccsid01145' : 2096, 'cp01145' : 2096, 'ebcdic-es-284+euro' : 2096, 'ibm01146' : 2097, 'ccsid01146' : 2097, 'cp01146' : 2097, 'ebcdic-gb-285+euro' : 2097, 'ibm01147' : 2098, 'ccsid01147' : 2098, 'cp01147' : 2098, 'ebcdic-fr-297+euro' : 2098, 'ibm01148' : 2099, 'ccsid01148' : 2099, 'cp01148' : 2099, 'ebcdic-international-500+euro' : 2099, 'ibm01149' : 2100, 'ccsid01149' : 2100, 'cp01149' : 2100, 'ebcdic-is-871+euro' : 2100, 'big5-hkscs' : 2101, 'unicode-1-1' : 1010, 'csunicode11' : 1010, 'scsu' : 1011, 'utf-7' : 1012, 'utf-16be' : 1013, 'utf-16le' : 1014, 'utf-16' : 1015, 'unicode-1-1-utf-7' : 103, 'csunicode11utf7' : 103, 'utf-8' : 106, 'iso-8859-13' : 109, 'iso-8859-14' : 110, 'iso-ir-199' : 110, 'iso_8859-14:1998' : 110, 'iso_8859-14' : 110, 'latin8' : 110, 'iso-celtic' : 110, 'l8' : 110, 'iso-8859-15' : 111, 'iso_8859-15' : 111, 'iso-8859-16' : 112, 'jis_encoding' : 16, 'csjisencoding' : 16, 'shift_jis' : 17, 'ms_kanji' : 17, 'csshiftjis' : 17, 'extended_unix_code_packed_format_for_japanese': 18, 'cseucpkdfmtjapanese' : 18, 'euc-jp' : 18, 'extended_unix_code_fixed_width_for_japanese' : 19, 'cseucfixwidjapanese' : 19, 'iso-10646-ucs-basic' : 1002, 'csunicodeascii' : 1002, 'iso-10646-unicode-latin1' : 1003, 'csunicodelatin1' : 1003, 'iso-10646' : 1003, 'iso-unicode-ibm-1261' : 1005, 'csunicodeibm1261' : 1005, 'iso-unicode-ibm-1268' : 1006, 'csunidoceibm1268' : 1006, 'iso-unicode-ibm-1276' : 1007, 'csunicodeibm1276' : 1007, 'iso-unicode-ibm-1264' : 1008, 'csunicodeibm1264' : 1008, 'iso-unicode-ibm-1265' : 1009, 'csunicodeibm1265' : 1009, 'iso-8859-1-windows-3.0-latin-1' : 2000, 'cswindows30latin1' : 2000, 'iso-8859-1-windows-3.1-latin-1' : 2001, 'cswindows31latin1' : 2001, 'iso-8859-2-windows-latin-2' : 2002, 'cswindows31latin2' : 2002, 'iso-8859-9-windows-latin-5' : 2003, 'cswindows31latin5' : 2003, 'adobe-standard-encoding' : 2005, 'csadobestandardencoding' : 2005, 'ventura-us' : 2006, 'csventuraus' : 2006, 'ventura-international' : 2007, 'csventurainternational' : 2007, 'pc8-danish-norwegian' : 2012, 'cspc8danishnorwegian' : 2012, 'pc8-turkish' : 2014, 'cspc8turkish' : 2014, 'ibm-symbols' : 2015, 'csibmsymbols' : 2015, 'ibm-thai' : 2016, 'csibmthai' : 2016, 'hp-legal' : 2017, 'cshplegal' : 2017, 'hp-pi-font' : 2018, 'cshppifont' : 2018, 'hp-math8' : 2019, 'cshpmath8' : 2019, 'adobe-symbol-encoding' : 2020, 'cshppsmath' : 2020, 'hp-desktop' : 2021, 'cshpdesktop' : 2021, 'ventura-math' : 2022, 'csventuramath' : 2022, 'microsoft-publishing' : 2023, 'csmicrosoftpublishing' : 2023, 'windows-31j' : 2024, 'cswindows31j' : 2024, 'gb2312' : 2025, 'csgb2312' : 2025, 'big5' : 2026, 'csbig5' : 2026, 'windows-1250' : 2250, 'windows-1251' : 2251, 'windows-1252' : 2252, 'windows-1253' : 2253, 'windows-1254' : 2254, 'windows-1255' : 2255, 'windows-1256' : 2256, 'windows-1257' : 2257, 'windows-1258' : 2258, 'tis-620' : 2259, 'hz-gb-2312' : 2085, } MIBenumNames = { 3 : 'US-ASCII', 27 : 'ISO-10646-UTF-1', 28 : 'ISO_646.basic:1983', 29 : 'INVARIANT', 30 : 'ISO_646.irv:1983', 20 : 'BS_4730', 31 : 'NATS-SEFI', 32 : 'NATS-SEFI-ADD', 33 : 'NATS-DANO', 34 : 'NATS-DANO-ADD', 35 : 'SEN_850200_B', 21 : 'SEN_850200_C', 36 : 'KS_C_5601-1987', 37 : 'ISO-2022-KR', 38 : 'EUC-KR', 39 : 'ISO-2022-JP', 40 : 'ISO-2022-JP-2', 104 : 'ISO-2022-CN', 105 : 'ISO-2022-CN-EXT', 41 : 'JIS_C6220-1969-jp', 42 : 'JIS_C6220-1969-ro', 22 : 'IT', 43 : 'PT', 23 : 'ES', 44 : 'greek7-old', 45 : 'latin-greek', 24 : 'DIN_66003', 46 : 'NF_Z_62-010_(1973)', 47 : 'Latin-greek-1', 48 : 'ISO_5427', 49 : 'JIS_C6226-1978', 50 : 'BS_viewdata', 51 : 'INIS', 52 : 'INIS-8', 53 : 'INIS-cyrillic', 54 : 'ISO_5427:1981', 55 : 'ISO_5428:1980', 56 : 'GB_1988-80', 57 : 'GB_2312-80', 25 : 'NS_4551-1', 58 : 'NS_4551-2', 26 : 'NF_Z_62-010', 59 : 'videotex-suppl', 60 : 'PT2', 61 : 'ES2', 62 : 'MSZ_7795.3', 63 : 'JIS_C6226-1983', 64 : 'greek7', 65 : 'ASMO_449', 66 : 'iso-ir-90', 67 : 'JIS_C6229-1984-a', 68 : 'JIS_C6229-1984-b', 69 : 'JIS_C6229-1984-b-add', 70 : 'JIS_C6229-1984-hand', 71 : 'JIS_C6229-1984-hand-add', 72 : 'JIS_C6229-1984-kana', 73 : 'ISO_2033-1983', 74 : 'ANSI_X3.110-1983', 4 : 'ISO-8859-1', 5 : 'ISO-8859-2', 75 : 'T.61-7bit', 76 : 'T.61-8bit', 6 : 'ISO-8859-3', 7 : 'ISO-8859-4', 77 : 'ECMA-cyrillic', 78 : 'CSA_Z243.4-1985-1', 79 : 'CSA_Z243.4-1985-2', 80 : 'CSA_Z243.4-1985-gr', 9 : 'ISO-8859-6', 81 : 'ISO-8859-6-E', 82 : 'ISO-8859-6-I', 10 : 'ISO-8859-7', 83 : 'T.101-G2', 11 : 'ISO-8859-8', 84 : 'ISO-8859-8-E', 85 : 'ISO-8859-8-I', 86 : 'CSN_369103', 87 : 'JUS_I.B1.002', 14 : 'ISO_6937-2-add', 88 : 'IEC_P27-1', 8 : 'ISO-8859-5', 89 : 'JUS_I.B1.003-serb', 90 : 'JUS_I.B1.003-mac', 12 : 'ISO-8859-9', 91 : 'greek-ccitt', 92 : 'NC_NC00-10:81', 93 : 'ISO_6937-2-25', 94 : 'GOST_19768-74', 95 : 'ISO_8859-supp', 96 : 'ISO_10367-box', 13 : 'ISO-8859-10', 97 : 'latin-lap', 98 : 'JIS_X0212-1990', 99 : 'DS_2089', 100 : 'us-dk', 101 : 'dk-us', 15 : 'JIS_X0201', 102 : 'KSC5636', 1000 : 'ISO-10646-UCS-2', 1001 : 'ISO-10646-UCS-4', 2008 : 'DEC-MCS', 2004 : 'hp-roman8', 2027 : 'macintosh', 2028 : 'IBM037', 2029 : 'IBM038', 2030 : 'IBM273', 2031 : 'IBM274', 2032 : 'IBM275', 2033 : 'IBM277', 2034 : 'IBM278', 2035 : 'IBM280', 2036 : 'IBM281', 2037 : 'IBM284', 2038 : 'IBM285', 2039 : 'IBM290', 2040 : 'IBM297', 2041 : 'IBM420', 2042 : 'IBM423', 2043 : 'IBM424', 2011 : 'IBM437', 2044 : 'IBM500', 2087 : 'IBM775', 2009 : 'IBM850', 2045 : 'IBM851', 2010 : 'IBM852', 2046 : 'IBM855', 2047 : 'IBM857', 2048 : 'IBM860', 2049 : 'IBM861', 2013 : 'IBM862', 2050 : 'IBM863', 2051 : 'IBM864', 2052 : 'IBM865', 2086 : 'IBM866', 2053 : 'IBM868', 2054 : 'IBM869', 2055 : 'IBM870', 2056 : 'IBM871', 2057 : 'IBM880', 2058 : 'IBM891', 2059 : 'IBM903', 2060 : 'IBM904', 2061 : 'IBM905', 2062 : 'IBM918', 2063 : 'IBM1026', 2064 : 'EBCDIC-AT-DE', 2065 : 'EBCDIC-AT-DE-A', 2066 : 'EBCDIC-CA-FR', 2067 : 'EBCDIC-DK-NO', 2068 : 'EBCDIC-DK-NO-A', 2069 : 'EBCDIC-FI-SE', 2070 : 'EBCDIC-FI-SE-A', 2071 : 'EBCDIC-FR', 2072 : 'EBCDIC-IT', 2073 : 'EBCDIC-PT', 2074 : 'EBCDIC-ES', 2075 : 'EBCDIC-ES-A', 2076 : 'EBCDIC-ES-S', 2077 : 'EBCDIC-UK', 2078 : 'EBCDIC-US', 2079 : 'UNKNOWN-8BIT', 2080 : 'MNEMONIC', 2081 : 'MNEM', 2082 : 'VISCII', 2083 : 'VIQR', 2084 : 'KOI8-R', 2088 : 'KOI8-U', 2089 : 'IBM00858', 2090 : 'IBM00924', 2091 : 'IBM01140', 2092 : 'IBM01141', 2093 : 'IBM01142', 2094 : 'IBM01143', 2095 : 'IBM01144', 2096 : 'IBM01145', 2097 : 'IBM01146', 2098 : 'IBM01147', 2099 : 'IBM01148', 2100 : 'IBM01149', 2101 : 'Big5-HKSCS', 1010 : 'UNICODE-1-1', 1011 : 'SCSU', 1012 : 'UTF-7', 1013 : 'UTF-16BE', 1014 : 'UTF-16LE', 1015 : 'UTF-16', 103 : 'UNICODE-1-1-UTF-7', 106 : 'UTF-8', 109 : 'ISO-8859-13', 110 : 'ISO-8859-14', 111 : 'ISO-8859-15', 112 : 'ISO-8859-16', 16 : 'JIS_Encoding', 17 : 'Shift_JIS', 18 : 'EUC-JP', 19 : 'Extended_UNIX_Code_Fixed_Width_for_Japanese', 1002 : 'ISO-10646-UCS-Basic', 1003 : 'ISO-10646-Unicode-Latin1', 1005 : 'ISO-Unicode-IBM-1261', 1006 : 'ISO-Unicode-IBM-1268', 1007 : 'ISO-Unicode-IBM-1276', 1008 : 'ISO-Unicode-IBM-1264', 1009 : 'ISO-Unicode-IBM-1265', 2000 : 'ISO-8859-1-Windows-3.0-Latin-1', 2001 : 'ISO-8859-1-Windows-3.1-Latin-1', 2002 : 'ISO-8859-2-Windows-Latin-2', 2003 : 'ISO-8859-9-Windows-Latin-5', 2005 : 'Adobe-Standard-Encoding', 2006 : 'Ventura-US', 2007 : 'Ventura-International', 2012 : 'PC8-Danish-Norwegian', 2014 : 'PC8-Turkish', 2015 : 'IBM-Symbols', 2016 : 'IBM-Thai', 2017 : 'HP-Legal', 2018 : 'HP-Pi-font', 2019 : 'HP-Math8', 2020 : 'Adobe-Symbol-Encoding', 2021 : 'HP-DeskTop', 2022 : 'Ventura-Math', 2023 : 'Microsoft-Publishing', 2024 : 'Windows-31J', 2025 : 'GB2312', 2026 : 'Big5', 2250 : 'windows-1250', 2251 : 'windows-1251', 2252 : 'windows-1252', 2253 : 'windows-1253', 2254 : 'windows-1254', 2255 : 'windows-1255', 2256 : 'windows-1256', 2257 : 'windows-1257', 2258 : 'windows-1258', 2259 : 'TIS-620', 2085 : 'HZ-GB-2312', } ############### STOP PASTE HERE ###################################### def charset_name_to_mibenum(name): if name is None or type(name) != type(''): return None name = string.lower(name) if re.match('^[0-9]+$', name): return int(name) elif NamedCharsets.has_key(name): return NamedCharsets[name] & 0xFFFF else: return None def charset_mibenum_to_name(mibenum): return MIBenumNames.has_key(mibenum) and MIBenumNames[mibenum] def charset_known_name (name): return type(name) == type('') and string.lower(name) in NamedCharsets.keys() def charset_known_names (): return NamedCharsets.keys() if __name__ == '__main__': #Here could be add some "name" and "MIBenum" pairs thats not in the list. ADDITIONAL = [ ['TACTIS', 2259], ['utf8' , 106], ['ISO-646DK', 99], ['utf', 106], ['SJIS', 17], ['JIS7', 39], ['ISO8859-15', 111], ['eucJP', 18], ['eucCN', 2025], ['eucKR', 38], ['ISO8859-1', 4], ['ISO8859-2', 5], ['ISO8859-3', 6], ['ISO8859-4', 7], ['ISO8859-5', 8], ['ISO8859-6', 9], ['ISO8859-7', 10], ['ISO8859-8', 11], ['eucTW', 2026] ] # Called as a script if len(sys.argv) != 2: print "Usage: %s " % sys.argv[0] print " Example: %s character-sets.txt > arrays.txt" % sys.argv[0] else: #Read and parse the file an put the result to ENTRYS IN_BODY = 0 #ENTRYS hold an array of ENTRY ENTRYS = [] #ENTRY hold an array. The first element are the MIBEnum, the second an #index (starting at zero) to the preferred name for the names array, the #third is an array of all the names for this charset. For Example: This: #----------------------- #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 #----------------------- #Will be: #[4, 3, ['ISO_8859-1:1987', 'iso-ir-100', 'ISO_8859-1', 'ISO-8859-1', 'latin1', 'l1', 'IBM819', 'CP819', 'csISOLatin1']] ENTRY = [None,None,None] NAMES = [] MIBENUM = 0 PREFERRED = 0 MAX_NAME_LENGTH = 0 sys.stderr.write("Reading File: %s\n" % sys.argv[1]) sys.stderr.write("Parsing File...\n") f = open (sys.argv[1], "r") for line in f.readlines(): if not IN_BODY: #After that the list of Charsets starts match = re.search(r"^-{13} {47}-{9}$", line) if match: IN_BODY = 1 elif IN_BODY: #With this line the list end match = re.search(r"^REFERENCES.*$", line) if not match: match = re.search(r"^Name\: {1,10}(.*?)(?: |\t){0,100}(\(preferred MIME name\)){0,1}(?: |\t){0,100}(?:\[.{1,20}\]){0,1}(?: |\t){0,5}$", line) if match: if NAMES != []: if MIBENUM != 0: ENTRY[0]=MIBENUM ENTRY[1]=PREFERRED ENTRY[2]=NAMES ENTRYS.append(ENTRY); ENTRY = [None,None,None] MIBENUM=0 NAMES = [] PREFERRED = 0 NAMES.append(match.group(1)) if len(match.group(1)) > MAX_NAME_LENGTH: MAX_NAME_LENGTH = len(match.group(1)) match = re.search(r"^MIBenum\: {1,10}(\d*?)(?: |\t){0,5}$", line) if match: MIBENUM = string.atoi(match.group(1)) match = re.search(r"^Alias\: {1,10}(.*?)(?: |\t){0,100}(\(preferred MIME name\)){0,1}(?: |\t){0,5}$", line) if match: if (string.upper(match.group(1)) != "NONE") and (len(match.group(1))>0): NAMES.append(match.group(1)) if len(match.group(1)) > MAX_NAME_LENGTH: MAX_NAME_LENGTH = len(match.group(1)) if match.group(2) != None: PREFERRED = len(NAMES)-1 if NAMES != []: ENTRY[0]=MIBENUM ENTRY[1]=PREFERRED ENTRY[2]=NAMES ENTRYS.append(ENTRY); f.close () sys.stderr.write("Done! Found %d Charsets\n" % len(ENTRYS)) print "\n" sys.stderr.write("Create \"NamedCharsets\" Array...\n") #Now write the first array (NamedCharsets) print "NamedCharsets = {" for PAIR in ADDITIONAL: print "\t\t '%s'%s: %4d," % (string.lower(PAIR[0]), \ " "*(MAX_NAME_LENGTH-len(PAIR[0])), \ #"\t\t", \ PAIR[1]) for ENTRY in ENTRYS: for NAME in ENTRY[2]: print "\t\t '%s'%s: %4d," % (string.lower(NAME), \ " "*(MAX_NAME_LENGTH-len(NAME)), \ #"\t\t", \ ENTRY[0]) print "\t\t}" print "\n\n\n" sys.stderr.write("Create \"MIBenumNames\" Array...\n") #Now write the second array (MIBenumNames) print "MIBenumNames = {" for ENTRY in ENTRYS: print "\t\t %4d : '%s'," % (ENTRY[0], ENTRY[2][ENTRY[1]]) print "\t }" print "\n" sys.stderr.write("All done!\n")