向python添加编码别名
问题内容:
有没有一种方法可以将别名添加到python进行编码。网络上有一些网站使用的编码为“
windows-1251”,但其字符集设置为win-1251,所以我想将win-1251作为Windows-1251的别名
问题答案:
该encodings
模块没有很好的文档说明,因此我将使用codecs
,这是:
import codecs
def encalias(oldname, newname):
old = codecs.lookup(oldname)
new = codecs.CodecInfo(old.encode, old.decode,
streamreader=old.streamreader,
streamwriter=old.streamwriter,
incrementalencoder=old.incrementalencoder,
incrementaldecoder=old.incrementaldecoder,
name=newname)
def searcher(aname):
if aname == newname:
return new
else:
return None
codecs.register(searcher)
这是Python 2.6-界面在早期版本中有所不同。
如果您不介意依靠特定版本的未记录内部结构,那么@Lennart的别名方法当然也可以-确实比这更简单;-)。但是我怀疑(正如他看来的那样)这一点更易于维护。