我有我的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 utf8
和SET NAMES utf8
,但我没有正确的输出。我该怎么做才能得到文字。
答案 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,隐含地,collation_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
。