scrapy 中文乱码与utf-8

记录一下刚才解决的有关scrapy中文乱码问题。

之前在mac上运行scrapy的时候没有关心过这一点,可能是系统默认字符就是utf-8。搬到linux服务器上之后会出现如下的错误。

1
UnicodeEncodeError: 'latin-1' codec can't encode characters in position 96-106: ordinal not in range(256)

而字符串会变成这样。

1
u'\u98ce\u6b66\u0416\u9f99\u884c'

经过查找资料和测试,需要修改的地方有两个。一是建表的时候,需要在create table之后加上

1
DEFAULT CHARACTER SET = utf8

二是在连接到数据库时,在MySQLdb.connect里加上

1
charset ='utf8'

执行这两步后,即可正常显示中文。

————————–BTW————————–
在做php显示的时候也遇到了乱码的问题,就不另开贴了。在连接到数据库后加上下面的语句即可。

1
mysqli_set_charset($conn,"utf8");