Mojolicious文字化けまとめ
よくハマるのでメモ。
言葉の定義から
Teng等で
- deflate : DBに挿入時のファンクション
- inflate : DBから取ってくるときのファンクション
inflateにdecode_utf8を仕込むとするとすんなり使える。http://shoheik.hatenablog.com/entry/2014/05/14/131718
基本
参考: UTF-8の扱い/Mojoliciousリファレンス
DBで文字化けしてないか確認
Select文で見たときにすでに文字化けしているときは、それ以前の問題でしょう。 utf8に統一する。確認方法は、
mysql> show variables like 'character_set%'; +--------------------------+------------------------------------------------------+ | Variable_name | Value | +--------------------------+------------------------------------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /usr/local/Cellar/mysql/5.6.17/share/mysql/charsets/ | +--------------------------+------------------------------------------------------+ 8 rows in set (0.10 sec)
内部文字列を考えてるのにおかしい。
mysql_enable_utf8を有効にしてコネクトしてみる。(これで今回は解決(汗)
+{ connect_info => [ $self->config->{db_dsn}, $self->config->{db_user}, $self->config->{db_password}, +{ mysql_enable_utf8 => 1 } ] }