我有一个设置为CHARACTER SET utf8mb4的mySQL表和一个具有CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci的列x,我可以直接在插入4字节unicode字符的数据库上运行SQL命令,例如
INSERT INTO mytable (x) VALUES ('');
但是当我在web2py中运行以下内容时,我得到一个不同的条目,看起来像????
sql = u"INSERT INTO mytable (x) VALUES (%s)"
db.executesql(sql, (u'',))
我是否需要在web2py中设置一些东西来告诉它通过unicode字符而不做任何改动?
附录:当我使用DAL时也会出现相同的????
条目,如
db.mytable.insert(x=u'')
答案 0 :(得分:1)
请参阅Trouble with UTF-8 characters; what I see is not what I stored
中的“问号”请参阅http://mysql.rjweb.org/doc.php/charcoll#python中的Python说明。特别是,你的连接参数是什么(在Python和MySQL之间)?
u"Invalid utf8 character string: 'F09F92'"
意味着Python(可能来自解释MySQL utf8
错误)被4字节的poo堆困惑。