こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

日本語の文字化け

perlのCGI,DBIを使ってMysqlにinsertしてますが、日本語が文字化けします。
文字化けした文字列は???となってます。
ちょと、見当がつかないので困ってます。
Mysqlは5.037を使ってます。

設定ファイルの追記は行ってます。
[mysqld]
default-character-set=sjis
[mysqldump]
default-character-set=sjis
[mysql]
default-character-set=sjis

●SHOW GLOBAL VARIABLES LIKE 'character\_set\_%
↓実行結果
character_set_client sjis
character_set_connection sjis
character_set_database sjis
character_set_filesystem binary
character_set_results sjis
character_set_server sjis
character_set_system utf8

投稿日時 - 2008-04-18 15:31:10

QNo.3957213

困ってます

質問者が選んだベストアンサー

データベースのcharsetは「sjis」ですか、それなら
「use uft8」していなければ、単純にDBIでconnectした直後に
$sth = $dbh->prepare("set names sjis");
$sth->execute;
するだけで文字化けは直ると思います。
データベースのcharsetは「utf8」であるか、perlのほうで「use utf8」してあるなら、
$sth = $dbh->prepare("set names utf8");
$sth->execute;
すればinsert文に文字リテラルにutf8コードの文字列が使えるはずです。
ただし、select文で返ってくる日本語文字列はutf8フラグがついていませんから、適宜「Encode::decode」でutf8フラグをつけてやる必要がある
かもしれません。

投稿日時 - 2008-04-19 11:57:58

お礼

回答ありがとうございます。

投稿日時 - 2008-04-19 15:38:34

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

OSは?ActivePerlですか?Perlのバージョンは?

投稿日時 - 2008-04-18 17:44:34

補足

OSはWindows 2000。
perl ActivePerl 5.8.8です。

投稿日時 - 2008-04-19 03:22:05

あなたにオススメの質問