あるプロジェクトでテスト実行したら以下のようなwarningが出てたので、発生箇所を調べた
UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode - interpreting them as being unequal if aBuf[:len(chunk)] == chunk:
ソース追っかけて行くと、unicode型に対してchardet.detectが呼ばれてそうな箇所があった。
シンプルにするとこれで再現する
# coding=utf-8 import chardet encoding = chardet.detect(u"あいうえお") print encoding
どうしてこんなことになってるのかわからないけど、unicode型に対してchardet.detectする意味がないと思われるので、unicode型の場合は該当箇所を通らないようにしたらwarningは出力されなくなった。
ちなみにwarningが出力されるだけでエラーにはならず、結果としてencodingはasciiとして判定される。
上記の実行結果
{'confidence': 1.0, 'encoding': 'ascii'}