这是代码(chardet(https://pypi.python.org/pypi/chardet) - 通用编码检测器)
import chardet
try:
for f in os.listdir(path):
print f, chardet.detect(f)['encoding'], f.decode(chardet.detect(f)['encoding'])
except Exception, e:
print str(e)
输出
qiwi2.sql ascii qiwi2.sql
www ascii www
’ҐЄбв®ўл© ¤®Єг¬Ґв.txt windows-1252
'ascii' codec can't encode characters in position 0-8: ordinal not in range(128)
答案 0 :(得分:1)
问题出在print
。它不知道用于控制台输出的编码是什么,因此它假设ASCII
,并自动执行encode
并失败。如果你自己做encode
它应该有用。
print f, chardet.detect(f)['encoding'], f.decode(chardet.detect(f)['encoding']).encode('utf-8')