コピペ用
#!/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(未確認)