MySQLの最近のブログ記事

ほとんどPHPでできているシステムなのですが、訳あってPerlから更新作業をする必要ができてしまい(というかPerlで書きたかった)一通り思い通りに動くものができた。

ところが日本語のデータが化ける。MySQL(バージョンは4.1)で保持している日本語のデータはSJISで格納されている(不本意ながら今さら変えられない)。そして、もちろんDBIでINSERT/UPDATEする時にEncode::decode/encodeを使ってSJISで格納しているにも関わらず化けてしまう。かなり悩んだあげく、やっとMySQLのドキュメントを見つけた。

接続のキャラクタセットおよび照合順序

次のようにconnect()直後に送信/受信のキャラクタセットをSJISであると指定してあげれば良い様です。

sub db_connect { my $dsn = "DBI:mysql:database=$DB;host=$DB_HOST"; my $dbh = DBI->connect($dsn, $DB_USER, $DB_PASS); unless ($dbh) { error("Coudn't connect Database $dsn"); die "Coudn't connect Database $dsn"; } my $stmt = $dbh->prepare("SET CHARACTER SET SJIS "); $stmt->execute(); return $dbh; }

このアーカイブについて

このページには、過去に書かれたブログ記事のうちMySQLカテゴリに属しているものが含まれています。

前のカテゴリはMusic♪です。

次のカテゴリはNetworkです。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。