我有大约1000名被读取os.listdir()
它们中的一些编码UTF8,有些是CP1252。
我想解码所有的人都在我的脚本以Unicode进行进一步的处理。 有没有办法让源编码正确解码成Unicode?
例:
for item in os.listdir(rootPath):
#Convert to Unicode
if isinstance(item, str):
item = item.decode('cp1252') # or item = item.decode('utf-8')
print item
如果你的文件不管是在cp1252
和utf-8
那么有一个简单的方法。
import logging
def force_decode(string, codecs=['utf8', 'cp1252']):
for i in codecs:
try:
return string.decode(i)
except UnicodeDecodeError:
pass
logging.warn("cannot decode url %s" % ([string]))
for item in os.listdir(rootPath):
#Convert to Unicode
if isinstance(item, str):
item = force_decode(item)
print item
否则,有一个charset检测库。
Python的-检测字符集并转换为UTF-8
https://pypi.python.org/pypi/chardet
使用的chardet库。 这是超级容易
import chardet
the_encoding = chardet.detect('your string')['encoding']
这就是它!