在这种情况下,Python的MySQLdb模块返回的是utf8编码还是unicode?
我使用MySQLdb连接到一个数据库,里面的所有内容都是用utf8编码存储的。
如果我执行了
cursor.execute("SET NAMES utf8")
然后通过另一个语句从数据库中获取一些数据。这是否意味着在
cursor.execute("SELECT ...")
cursor.fetchall()
中的字符串会是unicode格式?还是说我需要先通过
mystr.decode("utf8")
将它们转换成unicode格式?
1 个回答
10
来自文档:
连接(connect(parameters...))
...
use_unicode
如果设置为True,CHAR、VARCHAR和TEXT类型的字段会以Unicode字符串的形式返回,使用你配置的字符集。最好在服务器配置或客户端配置中设置默认编码(可以通过read_default_file来读取)。如果在连接后更改字符集(MySQL-4.1及以后版本),你需要在connection.charset中输入正确的字符集名称。
如果设置为False,文本类型的字段会以普通字符串的形式返回,但你仍然可以写Unicode字符串。
这个参数必须是关键字参数。