Python - 检测字符集并转换为utf-8

时间:2011-07-15 13:24:14

标签: python utf-8 python-2.x

有没有通用的方法来检测字符串字符集?我用户IPTC标签,没有已知的编码。我需要检测它,然后将它们更改为utf-8。

有人可以帮忙吗?

4 个答案:

答案 0 :(得分:36)

您想使用chardet,一个编码检测器

答案 1 :(得分:15)

有点晚了,但还有另一个解决方案:尝试使用pyicu

一个例子:

import icu
def convert_encoding(data, new_coding='UTF-8'):
    coding = icu.CharsetDetector(data).detect().getName()
    if new_coding.upper() != coding.upper():
        data = unicode(data, coding).encode(new_coding)
    return data

答案 2 :(得分:13)

如果您想使用cchardet,可以使用此功能。

import cchardet
def convert_encoding(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

答案 3 :(得分:3)

还有另一个名为cchardet

的模块

据说比chardet更快。

请注意,它需要Cython