1

ランダムな Web ページのコンテンツを mysql データベース ( MySQLdb ) に保存するスクリプトがあります。一部のページでは、次のようになります。

...
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

質問: データを正しくエンコード/デコードして、問題なく DB に格納するにはどうすればよいですか?

PS Pythonでの文字エンコーディングは終わりのない話です...

解決済み

メソッドにエンコーディングを追加しましたconnect:

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

1 に答える 1

1

~256 の可能なエントリしかないエンコーディング (つまり、latin-1) にランダムな Unicode を格納することはできません。データベースのエンコーディングを utf-8 などに変更すると、準備完了です。

于 2012-11-16T19:07:26.267 に答える