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]