用Python和MySQL进行字符串编码

2024-04-28 15:56:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要使用Python3脚本,在MySQL 5.7数据库中插入带有几个非ASCII字符的字符串,比如è甚至其他字母。我转换了utf8mb4中感兴趣的表的所有列。你知道吗

连接

db1 = MySQLdb.connect (
host="host1",
user="user1",
passwd="secret",
db="db1"
)

cursor1 = db1.cursor()
cursor1.execute("USE db1")

我可以用è正确地存储字符串。带有的字符串将生成以下错误:

UnicodeEncodeError: 'latin-1' codec can't encode character '\u2026' in position 1022: ordinal not in range(256)

反之亦然,连接

db1 = MySQLdb.connect (
host="host1",
user="user1",
passwd="secret",
db="db1"
)

cursor1 = db1.cursor()
cursor1.execute("USE db1")
cur.execute("SET NAMES utf8mb4;")
cur.execute("SET CHARACTER SET utf8mb4;")
cur.execute("SET character_set_connection=utf8mb4;")

生成由è引起的错误:

_mysql_exceptions.OperationalError: (1366, "Incorrect string value: '\\xE8 string...' for column 'column1' at row 1")

è具有十六进制代码E8。你知道吗

怎么了?你知道吗


Tags: 字符串hostexecutesecretconnectpasswdsetmysqldb
1条回答
网友
1楼 · 发布于 2024-04-28 15:56:13

在连接到DB时,您应该尝试通过如下操作将编码设置为UTF8:

db1 = MySQLdb.connect (
host="host1",
user="user1",
passwd="secret",
db="db1"
use_unicode=True, 
charset="utf8"
)

相关问题 更多 >