mariadb通过python的文本不正确

时间:2017-11-08 16:41:52

标签: python mysql encoding mariadb

我有我的mariadb,我有一些关于俄语的文本(我在INSERT INTO test VALUES(1, "Абвг Деёжзий", "2138712894-213123", true)添加)并且我有我的python代码:

import MySQLdb
connection=MySQLdb.connect(user="t", password="t", host="127.0.0.1", database="project")
cursor = connection.cursor()
cursor.execute("SELECT * FROM test;")
for a,b,c,d in cursor:
    print(a,b,c,d)

作为输出我有这个:

1 ???? ??????? 2138712894-213123 1

(其中?????????是一个俄语空格的字符串) 我尝试了SET CHARACTER SET utf8SET NAMES utf8,但我没有正确的输出。我该怎么做才能得到文字。

3 个答案:

答案 0 :(得分:1)

您应该能够在connect函数中使用charset选项..

connection=MySQLdb.connect(
   user="t"
 , password="t"
 , host="127.0.0.1"
 , database="project"
 , charset="utf8"
)

答案 1 :(得分:0)

请尝试SET NAMES utf8

它适用于MYSQL,也应该与MariaDB一起使用。 对于MariaDB KnowledgeBase

  

设置character_set_client,character_set_connection,   character_set_results,隐含地,collat​​ion_connection   会话系统变量到指定的字符集和排序规则。

     

确定客户端将用于发送的字符集   语句到服务器,服务器将用于发送结果   回到客户端。

答案 2 :(得分:0)

关于Python的说明:http://mysql.rjweb.org/doc.php/charcoll#python

最值得注意的是:使用

启动源代码
# -*- coding: utf-8 -*-

如果这还不够,请按照Trouble with UTF-8 characters; what I see is not what I stored中的提示填写“问号”。

如果您需要更多调试,请注意utf8(或utf8mb4)中Абвг的十六进制编码为D090 D0B1 D0B2 D0B3