python对中文的支持确实令人头疼不已,倒不是说解决不了,只是总为了解决编码的问题反复折腾有点浪费时间。
这不今天又碰到了编码问题,列出目录下的子文件夹和文件名时,中文显示成了这个样子:
'\xe7\xa7\x9f\xe8\xb5\x81\xe6\xb5\x81\xe7\xa8\x8b (1).png'
这是神马玩意儿?
怎么办,还得去检测并转换编码。
《可爱的python》提到chadet专干这事儿,于是下载安装了chardet,发现检测编码很方便很准确。
检测字符串ustring的编码:
codedetect = chardet.detect(ustring)["encoding"]
将编码codedetect转成unicode
ustring = unicode(ustring, codedetect)
将unicode编码成utf-8
ustring.encode("utf-8")
为什么最后转成utf-8?
因为绝大多数人为了避免“中文问题”,都在py文件的第一行加上了
# -*- encoding: utf-8 -*-
当然,如果你的不是这样的话,最后一步编码按你实际的情况就可以啦。
chardet下载地址:pypi.python.org/pypi/chardet/