mysql:13814
From: <ml_mysql@xxxxxxxxxx>
Date: Thu, 22 Mar 2007 20:32:14 +0900
Subject: [mysql 13814] Mysql の出力を、UTF8に変換できない
こんにちは 石川と申します。 多国化する必要があり、とりあえず UTF-8について勉強しています。 現在 EUC-JPで格納されているフィールドを読み、UTF8に変換し、 出力しようとしたところ、 (本番は、出力のHTMLに、中国語や韓国語と日本語が混じるため、事前に このようなテストをしています。) $test_2 = Encode::decode("Guess", $test_2); の所で、 euc-cn or shiftjis or euc-jp at /usr/lib/perl5/5.8.0/i386-linux-thread-multi/Encode.pm line 162, referer: http://192.168.1.17/ss/test/utf-8_test_db.html と言うエラーになってしまいます。 どの様にすれば、UTF8に変換できるか、教えてください。 よろしくお願いします。 Redhat Linux 3.0ES Perl 5.8.0 近い将来バージョンアップするつもりです。 MySQL version 4.1.14 Mysql のセット内容 ------------------------- character_set_client latin1 character_set_connection latin1 character_set_database latin1 character_set_results latin1 character_set_server latin1 character_set_system collation_connection latin1_swedish_ci collation_database latin1_swedish_ci collation_server latin1_swedish_ci (全てUTF8にすれば簡単ですが、関連するソフトが多いため、 先に、重要なところだけ、出力のみUTF-8にしようと思っています。) テーブル ------------------------------------- test_1 int(8) 主キー auto_increment test_2 longblob test_2 には、[longblob の内容です。] という文字が入っています。 テストしたスクリプト ------------------------- #!/usr/bin/perl use utf8; use Encode; use Encode::Guess; binmode STDOUT, ":utf8"; Encode::Guess->set_suspects(qw/euc-jp shiftjis 7bit-jis utf8 gb2312 euc-cn/); print "Content-type: text/html\n\n"; use DBI; use strict; my $test_1; my $test_2; my $dbh = DBI->connect('DBI:mysql:present','ID','PASS'); my $query = "SELECT test_1, test_2 FROM curriculam_kanri.curriculum_naiyou ORDER BY curriculum_naiyou_no LIMIT 1"; my $out = $dbh->prepare($query); $out->execute; $out->bind_col(1,\$test_1); $out->bind_col(2,\$test_2); $out->fetch; $out->finish(); $dbh ->disconnect(); $test_2 = Encode::decode("Guess", $test_2); # ここでエラーになります。 &head; print "$test_1 $test_2 <br>"; &foot; exit; sub head{ print "Content-type: text/html\n\n"; print "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n"; print "<html>\n"; print "<head>\n"; print "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n"; print "<title>UTF8 DB多国語テスト1</title>\n"; print "</head>\n"; print "<body>\n"; } sub foot{ print "</body>\n"; print "</html>\n"; } よろしくお願いします。
-> 13814 2007-03-22 20:32 [<ml_mysql@xxxxxxxxxx] Mysql の出力を、UTF8に変換できない 13815 2007-03-22 21:24 ┗["TOYOSHIMA,Masayuki"] 13816 2007-03-23 15:55 ┗[Tecchi <mugen_ml@xxx] テーブルのロックについて 13817 2007-03-23 21:30 ┣["T.Hirotsu" <hirotsu] 13818 2007-03-24 02:51 ┃┗[Tecchi <mugen_ml@xxx] 13824 2007-03-26 08:47 ┗[YuGo <yu.gotou@xxxxx] 13830 2007-03-26 18:12 ┗[Tecchi <mugen_ml@xxx] 13831 2007-03-26 22:01 ┣["T.Hirotsu" <hirotsu] 13832 2007-03-27 15:11 ┗[YuGo <yu.gotou@xxxxx] 13833 2007-03-27 19:14 ┗[Tecchi <mugen_ml@xxx]