プロが教えるわが家の防犯対策術!

shift-jisで作成したcsvを、MySQLへ"load data infile"し、perlにて query("select * from... ) で検索一致したものを、
"Content-type: text/html;charset=Shift_JIS\n\n"のHTMLで表示させたところ、???と表示され、文字化けしてしまっております。日本語が入る部分のcreateした型はtext型です。
しかし、"Content-type: text/html;charset=EUC-JP\n\n"ですと、正しく検索され、日本語表示されてました。このままEUCでいきたいところですが、作業の都合上、HTMLをsjisで表示させなければならず対策に行き詰っております。

環境ですが、レンタルサーバのRedHat(versionは失念...)、MySQLのcharsetは、
mysql>show variables like 'char%';
character_set_client ujis
character_set_connection ujis
character_set_database ujis
character_set_results ujis
character_set_server ujis
character_set_system utf8

perl, MySQLのバージョンは以下です。
o perl-5.8.0-88.4
o mysql --version
Ver 14.7 Distrib 4.1.14, for pc-linux-gnu (i686) using EditLine wrapper

レンタルサーバである事と、別の運用中サーバが既にMySQLを利用中であるため、再コンパイルをせずに、影響が無い範囲でどうにか日本語文字化けを改修できないか、過去の本サイトの過去質問も読み返しまして、
変換ライブラリjcode::convert(\$str,'sjis','euc')
や、perlスクリプトのDB connect直後に、
query("set names sjis")
query("set character set sjis")
なども行いましたが症状は変わらず、まだ解決に至っていない次第です。
#過去質問の見落としかもしれません。。。

何卒ご教授よろしくお願いします。m(_ _)m
情報の不足があればご指摘下さい。

A 回答 (2件)

データベースを作成する際かテーブル作成の際に


CHARACTER SET sjis
を指定して、sjisで作成してはいかがでしょうか?

また、clientで接続する際にも、sjisで接続して
loadでデータを流し込んで見てください。

この回答への補足

ご回答ありがとうございます!
ご教授いただいたとおりに、
1. create table時に、
mysql> create table a_list (
-> id int(10) not null,
-> comment text not null,
-> )character set sjis ;★
として作成し、
2. load data時に
(これもperlで組んでいるのでおりまして)
$dbh = Mysql->connect( ...) or die("...");
$dbh->query("set character set sjis") ;★
$dbh->query("load data infile '$base/db/alist.csv' into table a_list fields terminated by ',' lines terminated by '\r\n'") or die("...");
としましたが、まだ化けている状態です。。。
やり方に問題などありましたら、ご指摘下さい。

補足日時:2006/03/31 15:11
    • good
    • 0
この回答へのお礼

文字化け改修できました!
naochancomさんのコメントで、"データベースを作成する際かテーブル作成の際"の後者しか実施しておらず、前者すなわちデータベース作成の時点で、character set sjis したらうまくいきました。大変ありがとうございました!!

お礼日時:2006/03/31 16:29

MySQLの設定で"ujis"というのはEUC-JPのことだと思いました。


charactor_setをsjisに変えれば文字化けは直ると思います。

この回答への補足

ご回答ありがとうございます!
上記のとおり、まだ解決しておりません。。。

補足日時:2006/03/31 15:49
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!