2012-11-16 125 views
1

我有一個將隨機網頁內容存儲到mysql數據庫(MySQLdb)的腳本。對於一些網頁,我得到:插入MySQL時出現Unicode錯誤

... 
File "/usr/lib/python2.7/dist-packages/MySQLdb/connections.py", 
    line 264, in literal 
return self.escape(o, self.encoders)           
File "/usr/lib/python2.7/dist-packages/MySQLdb/connections.py", 
    line 202, in unicode_literal 
return db.literal(u.encode(unicode_literal.charset)) 

UnicodeEncodeError: 'latin-1' codec can't encode character 
u'\u203a' in position 172550: ordinal not in range(256) 

當我用sqlite3,我有沒有問題。

我想這一次,沒有成功:

CREATE DATABASE the_base CHARACTER SET utf8 

問題: 如何編碼/因此被存儲在數據庫中沒有任何有史以來問題的數據正確解碼?

P.S.在蟒蛇字符編碼是一個永無止境的故事...

解決

新增編碼connect方法:

MySQLdb.connect(... charset='utf8', use_unicode=True) 

回答

1

不能隨意統一存儲在只有一個編碼〜 256個可能的條目(即拉丁-1)。將數據庫中的編碼更改爲utf-8,你應該很好去。

+0

我剛剛嘗試過'創建數據庫the_base字符集utf8',但仍然是相同的錯誤 –

+0

請確保在連接參數中使用了'charset ='utf-8''(尤其是如果您的數據庫和服務器有不同的編碼)。 – thebjorn

+0

作品!實際上,它需要'utf8','utf-8'會引發錯誤 –