如何使用 web2py (mySQL) 插入 4 字节 unicode 字符?
How do I insert 4 byte unicode chars using web2py (mySQL)?
我有一个设置为 CHARACTER SET utf8mb4 的 mySQL table 和一个具有 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'')
参见
中的 "question mark"
请参阅 http://mysql.rjweb.org/doc.php/charcoll#python 中的 Python 注释。特别是,您的连接参数是什么(在 Python 和 MySQL 之间)?
u"Invalid utf8 character string: 'F09F92'"
暗示 Python(可能来自解释 MySQL utf8
错误)对 4 字节的便便感到困惑。
我有一个设置为 CHARACTER SET utf8mb4 的 mySQL table 和一个具有 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'')
参见
请参阅 http://mysql.rjweb.org/doc.php/charcoll#python 中的 Python 注释。特别是,您的连接参数是什么(在 Python 和 MySQL 之间)?
u"Invalid utf8 character string: 'F09F92'"
暗示 Python(可能来自解释 MySQL utf8
错误)对 4 字节的便便感到困惑。