Python任意文字セット変換


pythonでテキストを処理する過程で、テキストの文字セットを変換することがよくありますが、テキストの元の文字セットがどのようなものなのか気にせず、任意の文字セットに直接変換すればいい方法を望んでいます.
方法1:
import chardet  
def convert_encoding(data,new_coding='UTF-8'):
  #        
  encoding = chardet.detect(data)['encoding']
  if new_coding.upper() != encoding.upper():
    data  = data.decode(encoding,data).encode(new_coding)
  return data 

方法2:
import icu  
def convert_encoding2(data,new_coding='UTF-8'):

  encoding = icu.CharsetDetector(data).detect().getName()  
  # encoding = chardet.detect(content)['encoding']
  if new_coding.upper() != encoding.upper():
    # data  = data.decode(encoding,data).encode(new_coding)
    data = unicode(data,coding).encode(new_coding)
  return data 

方法3:
import cchardet
def convert_encoding3(data,new_coding='UTF-8'):
  encoding = cchardet.detect(data)['encoding']
  if new_coding.upper() != encoding.upper():
    data  = data.decode(encoding,data).encode(new_coding)
  return data 

使用方法:
ここでの使用方法1
#   utf-8
convert_encoding(data,'utf-8')

#   GBK  
convert_encoding(data,'gbk')

#   GB2312
convert_encoding(data,'gbk')