一、在爬蟲指令碼做以下操作仍提示錯誤:SQL Error: 1366: Incorrect string value: "\xd0\xc2\xce\xc5…" for column "mian_title" at row 1
1、在檔案頭新增
#coding:utf8
2、新增:
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
二、解決方法
1、檢查資料庫此欄位的字符集與整理字符集是否與SQL語句傳遞資料的字符集相同;不相同則會引發MySQL1366錯誤。
mysql> show full columns from main_news; #顯示資料表所有欄位使用的狀態(包括使用的字符集)。這裡我的資料表名是main_news
可以看出,main_title欄位的Collation項非utf8,進行修改。
2、修改
mysql> alter table main_news change main_title main_title varchar(900) character set utf8 collate utf8_unicode_ci not null default '';
在使用命令檢視修改已成功完成。
附:上面的方法是從單個欄位修改,下面介紹表,資料庫的修改
修改資料庫字符集:
ALTER DATABASE db_name DEFAULT CHARACTER SET character_name [COLLATE ...];
把表預設的字符集和所有字元列(CHAR,VARCHAR,TEXT)改為新的字符集:
ALTER TABLE tbl_name CONVERT TO CHARACTER SET character_name [COLLATE ...]
如:ALTER TABLE logtest CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
只是修改表的預設字符集:
ALTER TABLE tbl_name DEFAULT CHARACTER SET character_name [COLLATE...];
如:ALTER TABLE logtest DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
參考連結:http://fatkun.com/2011/05/mysql-alter-charset.html
至此,爬蟲指令碼成功將中文資料寫入至資料庫。