如何使用web2py(mySQL)插入4字节的unicode字符?

时间:2018-01-24 23:19:04

标签: mysql unicode web2py

我有一个设置为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'')

1 个答案:

答案 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堆困惑。