UnicodeEncodeError: 'latin-1' codec can't encode character

919 ワード

MySQLdbライブラリをインポートしてpythonでデータベースに接続したところ
'latin-1' codec can't encode character '\u9648' in position 0: ordinal not  in range(256)
のエラー.
多くの質問やドキュメントを調べたところ、MySQLdbは通常、すべてのものをlatin-1に符号化しようとしているためです.しかし、データベースに格納したい文字の中には、latin-1と競合したり、latin-1の文字セットを超えたりして、文字を符号化できないものもあります.
したがって、この符号化は任意の文字を使用することができるため、通常、データベースおよびページでUTF-8を使用する必要があります.また、MySQLでは、データベース接続と文字列の並べ替えルールを設定することによって、大文字と小文字の比較と並べ替えを区別しないUTF-8文字列が使用されていることを示す必要があります.
方法は次のとおりです.
      :
db=MySQLdb.connect(host='127.0.0.1',user=user,passwd=pwd,db=database,port=3306, (use_unicode = True),charset="utf8")
      :
db.set_character_set('utf8')
dbc.execute('SET NAMES utf8;')
dbc.execute('SET CHARACTER SET utf8;')
dbc.execute('SET character_set_connection=utf8;')
  "db"  MySQLdb.connect(), "dbc"   db.cursor()。