0

HTML ページを解析し、いくつかの文字列を取得してから、mysql テーブルに書き込む Python スクリプトを作成しました。MySQLDbデータベース接続にモジュールを使用しています。取得された文字列は ISO-8859-7 (ギリシャ語) でエンコードされます。これは、MySQL テーブルのデフォルトのエンコードでもあります。例外を生成するコードは次のとおりです。

  def db_write(list) :
    import MySQLdb as sql
    try :
        con = sql.connect(//database info here//)
    except :
        print "could not connect to database"
        exit()
    cur = con.cursor()
    for i in my_range (8,len(list)-2,2) :
        query = 'INSERT INTO as_doy VALUES (%s,"%s")' % (list[i],list[i+1])
        print query        
        try :
            cur.execute(query)
            con.commit()
        except :
            print "failed"
            con.rollback()
    con.close()

私が得る例外はERROR 1366 (HY000): Incorrect string value: '\xEF\xBF\xBD\xEF\xBF\xBD...'

文字列を utf-8 でエンコードし、iso-8859-7 でデコードして再エンコードしようとしましたが、まだ何もうまくいきませんでした。

4

1 に答える 1

1

charsetクエリを実行する前に、引数を.connect()or execute SET NAMES utf8(または同等のもの) に渡して、接続照合が正しいことを確認してください。

その他のヒントについては、このリンクを参照してください。

于 2012-05-18T19:05:36.713 に答える