そういえば、エスケープしてないことに気づいた情弱な俺。
escapeをしようとして。以下の文を書きました。
MySQLdb.escape_string(text);
よし、これで今日のお仕事終わり!!
とはいきませんでした。
なんと、これだとescape_stringはstr型を取る関数らしく。
unicode型を入れるとasciiに変換できないよ!!といわる。
UnicodeEncodeError: 'ascii' codec can't encode characters in position 3-5: ordinal not in range(128)
ちなみに今回登録したい文字列は"なでこ'かわいいよ'なでこ"です。
すこし悩んだのですが
MySQLdb.escape_string(text.encode("utf-8"));
とすると解決しました。
ちょっと、めんどくさいと思った今日この頃
2012年2月27日月曜日
2012年2月22日水曜日
MySQL+Pythonの文字コード問題
MySQL+Pythonといちゃいちゃしてたら。
お前の使ってるcharsetはutf8じゃないよ。
日本語打てないよとか言ってきました。
ちなみに登録したい文字列は撫子です!!
http://ext.omo3.com/linux/mysql_character_set.html
このページに沿ってMySQLを設定しなおした。
しかし!!治らないってことでもう一度調べた結果。
Pythonのソースコード側も少し書き換えないといけないようです。
MySQLdb.connct(host="localhost", db="hoge", user="huga", passwd="pass", charset="utf8");
このように書けば晴れてMySQLに撫子と登録することができました。
お前の使ってるcharsetはutf8じゃないよ。
日本語打てないよとか言ってきました。
ちなみに登録したい文字列は撫子です!!
http://ext.omo3.com/linux/mysql_character_set.html
このページに沿ってMySQLを設定しなおした。
しかし!!治らないってことでもう一度調べた結果。
Pythonのソースコード側も少し書き換えないといけないようです。
MySQLdb.connct(host="localhost", db="hoge", user="huga", passwd="pass", charset="utf8");
このように書けば晴れてMySQLに撫子と登録することができました。
登録:
投稿 (Atom)