2017-06-22 1 views
0

èなどのいくつかの非ASCII文字を含むMySQL 5.7データベース文字列に、Python3スクリプトを使用して挿入する必要があります。興味のあるテーブルのすべての列をutf8mb4に変換しました。PythonとMySQLを使った文字列のエンコーディング

db1 = MySQLdb.connect (
host="host1", 
user="user1", 
passwd="secret", 
db="db1" 
) 

cursor1 = db1.cursor() 
cursor1.execute("USE db1") 

との接続

私が正しくèで文字列を格納することができます。

db1 = MySQLdb.connect (
host="host1", 
user="user1", 
passwd="secret", 
db="db1" 
) 

cursor1 = db1.cursor() 
cursor1.execute("USE db1") 
cur.execute("SET NAMES utf8mb4;") 
cur.execute("SET CHARACTER SET utf8mb4;") 
cur.execute("SET character_set_connection=utf8mb4;") 

とに起因するèが生成されるエラーを接続する、

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

その逆:との文字列は、代わりに次のエラーを生成

_mysql_exceptions.OperationalError: (1366, "Incorrect string value: '\\xE8 string...' for column 'column1' at row 1") 

èは進コードE8を有しています。

どういうところが間違っていますか?

答えて

1

あなたはこのような何かを行うことによって、DBへの接続時にUTF8にエンコードを設定してみてくださいする必要があります

db1 = MySQLdb.connect (
host="host1", 
user="user1", 
passwd="secret", 
db="db1" 
use_unicode=True, 
charset="utf8" 
) 
関連する問題