2017-06-22 18 views
0

我需要使用Python3脚本将几个非ASCII字符(如è或甚至其他字母)插入到MySQL 5.7数据库字符串中。我将utf8mb4中感兴趣的表的所有列转换。使用Python和MySQL进行字符串编码

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

怎么了?

回答

1

你应该尝试的编码设置为UTF-8在连接到数据库做这样的事情:

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