はじめに
perl関連で文字化け的なものが発生すると、あーあれね、内部文字列だとかのやつね。
とかなりがちですよね。
しかしそう思い込んで対処しようとしていたらもっと初歩的なことに気付かずで時間を使ってしまったというだけのメモ。
ぐ。。。
対応方法
文字化けった内容のほうは見せるまでもないので対応だけ書いておわりにします。
文字化けるとき
# 各変数には適切な値が入ってる my $dbh = DBI->connect( "dbi:mysql:dbname=$DB_NAME;host=$DB_HOST;port=$DB_PORT;mysql_socket=/tmp/mysql.sock", "$DB_USER","$DB_PASS", { RaiseError => 1, PrintError => 1, AutoCommit => 1, Warn => 1 } ) or die "$!\n Error: failed to connect to DB.\n";
文字化けなくすとき
# 各変数には適切な値が入ってる my $dbh = DBI->connect( "dbi:mysql:dbname=$DB_NAME;host=$DB_HOST;port=$DB_PORT;mysql_socket=/tmp/mysql.sock", "$DB_USER","$DB_PASS", { RaiseError => 1, PrintError => 1, AutoCommit => 1, Warn => 1 } ) or die "$!\n Error: failed to connect to DB.\n"; $dbh->do("set names utf8");
そうです。
$dbh->do("set names utf8");
が抜けてるというかなり初歩的なやーつです。
文字化けってるときってこんなんãã¹ãã¦ãã¨
とかになったりしますけど、
どの文字列もEncode::decode
とかutf8
プラグマとかしようがしまいが????
ってなるのでおかしいなーとは思ったんですよね。。。orz
完全あーあれね、perlの文字コードの扱いのヤツねと、Encode
モジュールあたりやらいろいろ見直してみてもみつからず。。。
思い込みってこわい(><)
おわり
初歩的なことでも思ったよりは時間を使ってしまったので戒メモでした。。。