我有一个Flask应用程序,它的数据库是MySQL。我试图在包含波斯语数据字段的表之一上执行SELECT查询。查询输出是问号(?),而不是波斯字符。这是我的数据库字符集:
+--------------------------+---------+
| Variable_name | Value |
+--------------------------+---------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8 |
| character_set_system | utf8 |
+--------------------------+---------+
这是我在服务器上执行SELECT查询时的波斯字符:
mysql> select dComment from dailyLeave;
+---------------------------------------------------+
| dComment |
+---------------------------------------------------+
| مرخصی یک روزه به دلیل کسالت |
| مرخصی اجباری! |
+---------------------------------------------------+
这是我在Python代码中执行相同查询时的输出:
cur, conn = connection()
cur.execute('SELECT dComment FROM dailyLeave')
(('????? ?? ???? ?? ???? ?????',), ('????? ??? ???? ????',))
我自己找到了解决方案,它很简单:)在执行查询之前,请在您的代码中编写以下内容:
db.set_character_set('utf8')
dbc.execute('SET NAMES utf8;')
dbc.execute('SET CHARACTER SET utf8;')
dbc.execute('SET character_set_connection=utf8;')
db是MySQLdb.connect()的结果,而dbc是db.cursor()的结果。
感谢发表此内容的人。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句