Python MySQLdb更改字符串编码

2024-10-02 18:14:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我认为我的问题是python不能很好地处理SQL表中列的字符编码:

| column | varchar(255) | latin1_swedish_ci | YES  |     | NULL              |                             | select,insert,update,references |    | 

上面显示了此列的输出。它的类型是varchar(255),编码是latin1_swedish_ci.

现在,当我试图让python使用这些数据时,我得到了以下错误:

^{pr2}$

gsgensim主题建模库。我认为问题是gensim需要unicode编码。在

  1. 如何更改字符编码(排序规则?)对于我数据库中的这个列?在
  2. 有没有其他的解决办法?在

谢谢你的帮助!在


Tags: ci编码sqlupdatecolumn字符selectnull
3条回答

我想你的MYSQLdb python库不知道它应该编码成utf8

并且编码为默认的python系统定义的字符集latin1。在

当您connect()到数据库时,传递charset='utf8'

参数。这也应该使手册SET NAMES

我用MySQLdb v1.2.5试用了@saudi_Dev的解决方案。表I查询是用DEFAULT CHARSET=utf8创建的。即便如此,在尝试@saudi_Dev的解决方案之前,cursor.fetchall()出于某种原因返回了latin1中的字符串。在使用charset=utf8参数之后,cursor.fetchall()将字符串返回为Unicode(技术上不是{}),而不是{}。在

但我在http://mysql-python.sourceforge.net/MySQLdb.html中看到,您也可以传递参数use_unicode=False。这是因为,根据我发布的链接中的用户指南,使用charset参数意味着use_unicode=True。在

对于问题1,您需要使用

alter table t 
modify col varchar(255) 
character set utf8
collate utf8_unicode_ci

我不知道第二个问题。在

相关问题 更多 >