趣味のプログラム工房

Mysql使用時の文字化け

最近、CGIのプログラムはperlやphpを作るときにはもっぱらutf-8を使うんですが(楽天とかamazonとかのAPIから帰ってくるデータがutf-8なため)、 自分のサイトでMysqlを使ってプログラムを作ると、データの受け渡しで何故か文字化けが発生します。
もちろん、データベース側の文字コードもutf-8に設定。

結論から言うと
データ受け渡しのsqlクエリーを発行する前に
SET NAMES utf8
SET CHARACTER SET utf8
(どちらか片方でもいいらしい)のクエリーをmysqlに送ればデータがデータベースの内部エンコードに関わらず設定した文字コードで帰ってくるらしいです。 便利ですね。
ただし、perlの場合はそれ以前の問題として、ソースの文字コード、内部文字コード、出力する際の文字コードなどの設定を正しく行ってください。
個人的にはそういう面ではphpの方が使いやすい気がします。

2010年11月14日