向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的别名方法当然也可以-确实比这更简单;-)。但是我怀疑(正如他看来的那样)这一点更易于维护。