我有一个设置为 CHARACTER SET utf8mb4 的 mySQL 表和一个具有 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci 的 x 列,我可以直接在数据库上运行 SQL 命令来插入 4 字节 unicode 字符,例如
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'💩')
最佳答案
参见 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 string: 'F09F92'"
暗示 Python(可能是由于解释 MySQL utf8
错误)对 4 字节的 poo 感到困惑.
关于mysql - 如何使用 web2py (mySQL) 插入 4 字节 unicode 字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48433284/