• ベストアンサー

Shift-JIS文字化けについて

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 情報の不足があればご指摘下さい。

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

  • ベストアンサー
回答No.2

データベースを作成する際かテーブル作成の際に CHARACTER SET sjis を指定して、sjisで作成してはいかがでしょうか? また、clientで接続する際にも、sjisで接続して loadでデータを流し込んで見てください。

laputa-kun
質問者

お礼

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

laputa-kun
質問者

補足

ご回答ありがとうございます! ご教授いただいたとおりに、 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("..."); としましたが、まだ化けている状態です。。。 やり方に問題などありましたら、ご指摘下さい。

その他の回答 (1)

  • yeslets
  • ベストアンサー率31% (47/151)
回答No.1

MySQLの設定で"ujis"というのはEUC-JPのことだと思いました。 charactor_setをsjisに変えれば文字化けは直ると思います。

laputa-kun
質問者

補足

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

関連するQ&A