python - 我无法使用 pyodbc 从 MySQL 正确打印字符

标签 python mysql jupyter-notebook pyodbc

我使用pyodbc连接MySQL,并成功将一些中文数据放入MySQL,但无法打印出正确的字符

In[1]: import pyodbc
       cn = pyodbc.connect("DRIVER={MySQL ODBC 8.0 ANSI Driver}; SERVER=localhost; PORT=3306;DATABASE=db; UID=root; PASSWORD=******;OPTION=3;CHARSET=UTF8;") 
       cn.setencoding(encoding='utf-8')
       cursor = cn.cursor()

In[2]: cursor.execute("insert into tc_lite values(2018, 05 ,06 ,0 ,0 ,'中文','測試',127, 110)")
       cursor.execute("select * from tc_lite;")
       cursor.fetchall()
out[2]: [(2018, 5, 6, 0, 0, '銝剜?', '皜祈岫', 127.0, 110.0)]
<小时/>

但是当我使用pymysql连接时,它可以显示正确的字符

In[3]: conn = pymysql.connect(host='localhost',port=3306,user='root',passwd='******',db="trydb", charset='utf8')
       cursor = conn.cursor()

In[4]: cursor.execute("select * from tc_lite;")
       cursor.fetchall()
out[4]: ((2018, 5, 6, 0, 0, '中文', '測試', 127.0, 110.0),)

如果我想使用 pyodbc,我该如何修复它以显示像 pymysql 的输出

我使用win7、python 3.6.1、pyodbc 4.0.16、Jupyter Notebook 5.5.0

最佳答案

您的连接字符串表明您正在使用 ANSI 版本的 MySQL ODBC 驱动程序。如果您想使用 UTF-8 编码文本,您应该使用 UNICODE 版本的驱动程序。

关于python - 我无法使用 pyodbc 从 MySQL 正确打印字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50366333/

相关文章:

python - 为什么我的 JupyterLab 笔记本代码控制台没有按应有的方式显示 'command history'?

python - nbconvert jupyter笔记本到pdf(带颜色)

python - 修改matplotlib patchcollecton3d数据

python - Pandas - 绘制具有多列的未堆叠 DataFrame

python - 在 python 中使用 glob.glob 排序

php - 在MySQL数据库中指定HTML输入属性?

mysql - 将选择查询保存在变量中并在更新和插入中使用它

python - 使用二分法求解方程

mysql - 使用字段的子字符串更新字段

python - 有没有办法在 macOS Big Sur 上使用 SageMath?