コピペ用
#!/usr/bin/perl -- use strict; use DBI; use DBD::Pg; use DBD::mysql; use utf8; # -- DBI 接続 my $dbh = DBI->connect ( $config{db_dsn} , $config{db_user} , $config{db_password} , { RaiseError => 1 , PrintError => 0 , AutoCommit => 1 , pg_enable_utf8 => 1 , # 結果をUTF8フラグ付きにする(PostgreSQL) mysql_enable_utf8 => 1 , # 結果をUTF8フラグ付きにする(MySQL) } );
解説
DBIモジュールを使用してデータベースに接続する際に、上記のハイライト部分を追加しておきます。
それぞれPostgreSQLとMySQLで指定方法が違います。
こうしておくことで、上記のDBハンドラで取得した文字列は自動的に内部文字列(いわゆるUTF8フラグが付いた文字列)になります。
Encodeモジュールのdecode()
などを使ってPerl内部文字列に変換する手間が省けるので、お勧めです。
確認したバージョン
- DBI 1.63
- DBD::Pg 3.0.0
- DBD::mysql(未確認)