0

私はscrapyを使用して、w3バリデーターによるとutf-8であるWebサイトから情報を取得します。

私のPythonプロジェクトには

# -*- coding: utf-8 -*-

LópezJのような名前が付いていますが、印刷すると問題なく表示されます...

しかし、それをmysqlに保存したい場合、ASCIIが何とか何とか何とかエンコードできないというエラーが発生します...

私が使用する場合私は.encode ('ascii', 'ignore')取得します:Lpez J 私が使用する場合私は.encode ('ascii', 'replace')取得します:López J 私が使用する場合私は.encode ('utf-8')取得します:López J

私は何をすべきか?私はここで大きな問題を抱えています:'(

4

2 に答える 2

2

データベースに接続するときはcharset='utf-8', use_unicode=True、他のキーワードを使用してconnect()メソッドを作成します。これにより、dababaseがUnicode値を受け入れて返すようになるため、手動でエンコードする必要はありません(また、エンコードしないでください)。

例:

>>> import MySQLdb
>>> conn = MySQLdb.connect(... , use_unicode=True, charset='utf8')
>>> cur = conn.cursor()
>>> cur.execute('CREATE TABLE testing(x VARCHAR(20))')
0L
>>> cur.execute('INSERT INTO testing values(%s)', ('López J',))
1L
>>> cur.execute('SELECT * FROM testing')
1L
>>> print cur.fetchall()[0][0]
López J
于 2012-08-28T05:40:17.643 に答える
1

サーバー、データベース、テーブル、列、および接続の文字セットを確認してください。

簡単なテストとして、実行してみてください

SET NAMES 'utf8';

接続直後。

于 2012-08-28T05:32:50.973 に答える