MySQLでのpythonのエンコード
-
27-10-2019 - |
質問
この記事では、Pythonで MySQLでの私の質問と同じです:UnicodeEncodeErrorを: 'ASCII' >これはただ明確なものまであります。
私は、MySQLデータベースに文字列を保存しようとしていますが、私はエラーを取得します:
ファイル ".smart.py"、51行、で (番号、テキスト、 'スマート'、 'U')
UnicodeDecodeError:「ASCII」コーデックができませんデコードバイトに0xC2位置にあります 25:序ない範囲で(128)
と文字列がの M [ 'テキスト'] の
に保存されていますララ* =#&%@ <> _:;?! - ' "/()¥¡¿
ここでは、コードスニペットには、
risk = m['Text']
msg = risk.encode('utf8')
text = db.escape_string(msg)
sql = "INSERT INTO posts(nmbr, \
msg, tel, sts) \
VALUES ('%s', '%s', '%s', '%s')" % \
(number, text, 'smart', 'u')
私は、SQLクエリとプットをコメントアウトしようとした場合の の印刷テキストののそれララをプリントアウトするだろう* =#&%@ <> _:; - 」?! 「/()¥¡¿
SQLが処理されているときにエラーが発生しただけされます。
MySQLのエンコーディングはutf8_unicode_ci内に設定されています。 (または私はこれを変更すべきか?)
感謝します。
解決
これらのパラメータのMySQLdb.connect(..., use_unicode=1,charset="utf8")
を追加します。
カーソルを作成
cur = db.cursor()
その後、などのように実行します:
risk = m['Text']
sql = """INSERT INTO posts(nmbr, msg, tel, sts) \
VALUES (%s, %s, %s, %s)"""
values = (number, risk, 'smart', 'u')
cur.execute(sql,values) #use comma to separate sql and values, this will ensure values are escaped/sanitized
cur.commit()
今、あなたはこれらの2行を必要といけません
msg = risk.encode('utf8')
text = db.escape_string(msg)
他のヒント
あなたのm['Text']
値の型がStringType
またはUnicodeType
であるかどうかは明らかではありません。私の賭けは、バイト文字列(StringType
)であるということです。それが本当ならば、あなたの挿入前にラインm['Text'] = m['Text'].decode('UTF-8')
を追加する働きがあります。