如何使用python将其他编码格式的字符批量decode

python中如果要处理中文问题,通常要注意编码问题。大致的思路是

各种格式(如utf_8)--->unicode--->各种格式(如utf_8) 

一般来说,只有化成同一种编码格式才能进行一些操作,如判断、查找等。
所以在操作的时候,一般会将输入字符decode成unicode的再操作。

a='你好'#utf-8格式的
b=a.decode('utf-8')#b是unicode的了。

现在的问题是:
如果我不清楚a的编码格式,或者知道a的编码格式有很多种,这种情况下如何解码?
有没有一种统一的函数,可以decode任何格式的字符,而不用知道这个字符的编码方式i?

阅读 4.9k
3 个回答

看看chardet

楼上正解。chardet基本够用了。


import chardet


def decode(line):
    '''
    把str转换为unicode
    '''
    if isinstance(line, unicode):
        return line
    result = chardet.detect(line)
    if result['confidence'] > 0.95:
        return line.decode(result['encoding'])
    else:
        raise Exception('unknow encoding')

print repr(decode(u'我是一只小小鸟'))
f=lambda x:x.decode(chardet.detect(x)['encoding']) if not isinstance(x, unicode) else x
f(your_str)

P.S. 如果你是用python3,基本上没什么编码问题了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题