web-dev-qa-db-ja.com

Pythonで文字セットを検出してutf-8に変換しますか?

文字列文字セットを検出する普遍的な方法はありますか? IPTCタグを使用していますが、既知のエンコーディングがありません。それを検出し、utf-8に変更する必要があります。

誰でも助けることができますか?

32
robos85

chardet 、エンコーディング検出器を使用したい

少し遅いですが、別の解決策もあります: pyic を使用してみてください。

例:

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
16
parkouss

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
13
teawithfruit

cchardet という別のモジュールがあります

シャルデットよりも速いと言われています。

Cython が必要であることに注意してください

3
laike9m