Python(Bottle), PyMySQL, SQLAlchemyを利用しています。
様々な記事を調べてMySQL上での文字コードをutf8mb4に設定しましたが、
「あああ」などのマルチバイト文字を挿入すると文字化けが起きてしまいます。
十中八九、SQLAlchemyからDBに接続する際の文字コードがutf8mb4に出来ていないのが原因なので以下を試しても状況は変わらず、手詰まりとなっています。
どのように設定したらよいのでしょうか?
ご存じの方がいらっしゃいましたら、ご教示いただけましたら幸いです。
追記:
調べてみたところ、
HTMLのフォームからbottleに値を渡したときにbottleのほうで文字化けが起こってしまっているようでした。
bottleの設定のほうを見直してみます。
setting.py
1# coding: utf-8 2from sqlalchemy import * 3from sqlalchemy.orm import * 4from sqlalchemy.ext.declarative import declarative_base 5 6DATABASE = 'mysql+pymysql://%s:%s@%s/%s?charset=utf8mb4' % ( 7 "hoge", 8 "hoge", 9 "hogehost", 10 "hogetable" 11) 12ENGINE = create_engine( 13 DATABASE, 14 convert_unicode=True, 15 echo=True 16) 17 18# sessionの作成 19session = scoped_session( 20 sessionmaker( 21 autocommit = False, 22 autoflush = False, 23 bind = ENGINE 24 ) 25) 26 27Base = declarative_base() 28Base.query = session.query_property()
mysql
1mysql> show variables like "chara%"; 2+--------------------------+----------------------------+ 3| Variable_name | Value | 4+--------------------------+----------------------------+ 5| character_set_client | utf8mb4 | 6| character_set_connection | utf8mb4 | 7| character_set_database | utf8mb4 | 8| character_set_filesystem | binary | 9| character_set_results | utf8mb4 | 10| character_set_server | utf8mb4 | 11| character_set_system | utf8 | 12| character_sets_dir | /usr/share/mysql/charsets/ | 13+--------------------------+----------------------------+

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。