我知道我可以做到以下几点:
>>> import encodings, pprint
>>> pprint.pprint(sorted(encodings.aliases.aliases.values()))
['ascii',
'base64_codec',
'big5',
'big5hkscs',
'bz2_codec',
'cp037',
'cp1026',
'cp1140',
'cp1250',
'cp1251',
'cp1252',
'cp1253',
'cp1254',
'cp1255',
'cp1256',
'cp1257',
'cp1258',
'cp424',
'cp437',
'cp500',
'cp775',
'cp850',
'cp852',
'cp855',
'cp857',
'cp860',
'cp861',
'cp862',
'cp863',
'cp864',
'cp865',
'cp866',
'cp869',
'cp932',
'cp949',
'cp950',
'euc_jis_2004',
'euc_jisx0213',
'euc_jp',
'euc_kr',
'gb18030',
'gb2312',
'gbk',
'hex_codec',
'hp_roman8',
'hz',
'iso2022_jp',
'iso2022_jp_1',
'iso2022_jp_2',
'iso2022_jp_2004',
'iso2022_jp_3',
'iso2022_jp_ext',
'iso2022_kr',
'iso8859_10',
'iso8859_11',
'iso8859_13',
'iso8859_14',
'iso8859_15',
'iso8859_16',
'iso8859_2',
'iso8859_3',
'iso8859_4',
'iso8859_5',
'iso8859_6',
'iso8859_7',
'iso8859_8',
'iso8859_9',
'johab',
'koi8_r',
'latin_1',
'mac_cyrillic',
'mac_greek',
'mac_iceland',
'mac_latin2',
'mac_roman',
'mac_turkish',
'mbcs',
'ptcp154',
'quopri_codec',
'rot_13',
'shift_jis',
'shift_jis_2004',
'shift_jisx0213',
'tactis',
'tis_620',
'utf_16',
'utf_16_be',
'utf_16_le',
'utf_32',
'utf_32_be',
'utf_32_le',
'utf_7',
'utf_8',
'uu_codec',
'zlib_codec']
我也确信这不是一个完整的列表,因为它只包含别名存在的编码(例如缺少“cp737”),并且至少缺少一些伪编码(例如“string_escape”)。在
正如问题的标题所说:如何以编程方式获得Python已知的所有编解码器/编码的列表?在
如果不是以编程方式:是否有一个完整的列表可以在线使用?在
安装gettextcodecs库(一个?)或只是(更简单的)从该库中获取代码并使用它。签入python,如果它不起作用lt&3。在
我不认为完整的列表存储在python标准库中的任何地方。相反,编码是通过调用
encoding.search_function(encoding)
按需加载的。如果您研究那里的代码,看起来encoding
字符串首先被规范化,然后在encodings
包中搜索名称与encoding
匹配的子模块。在下面使用
pkgutil
列出encoding
的所有子模块,然后将它们添加到encoding.aliases.aliases
中列出的子模块中。在不幸的是,
encoding.aliases.aliases
包含一个编码,tactis
,这不是由上述代码生成的,所以我试图通过合并这两个集合来生成完整的列表。在相关问题 更多 >
编程相关推荐