mysql:9924
From: Koichi Taniguchi <Koichi Taniguchi <taniguchi@xxxxxxxxxx>>
Date: Thu, 29 Jul 2004 11:26:34 +0900
Subject: [mysql 09924] Re: perl による検索処理での日本語取り扱い(Win32,S-JIS)
谷口と申します。 On Thu, 29 Jul 2004 10:13:41 +0900 "Mamiya Masataka" <xc8m-mmy@xxxxxxxxxx> wrote: > perl から DBD-mysql 経由で mySQL に接続、SELECT 文で日本語を使うのですが、 > 以下のような状況になります。 > > $sth = $dbh->prepare (qq{ > SELECT Field1 FROM mamiya00 WHERE Field5 like '%間宮%' > }); > #この SQL 文を実行するとエラー(Internal Server Error)となります。 > $sth = $dbh->prepare (qq{ > SELECT Field1 FROM mamiya00 WHERE Field5 like '%間%' > }); > #この SQL 文ではエラーとならず、間宮を抽出できます。 > > %間宮% を jcode.pl で euc に変換して実行すれば、エラーとはなりません。 > しかし、データベースの文字コードが Shift-JIS のため、 > 合致するデータが無く、抽出できません。 これは、MySQL 云々や、Win32 云々の問題ではないと思います。 そもそも、Shift_JIS で書く場合、Perl の基本的な文で、 print qq{間宮}; と print qq|間宮|; の両方を試してみると、上はダメだけど下はイケるはずです。 というのも、Shift_JIS の場合、「宮」の字の下位バイトが、0x7B ("{") にあたります。つまり上は、 print qq{間\x8B{}; と等価で、中括弧の対応が合いません。DBI を使われるという事で あれば、プレースホルダを使われたほうが良いかと思います。 -- Koichi Taniguchi <taniguchi@xxxxxxxxxx>
9922 2004-07-29 10:13 ["Mamiya Masataka" <x] perl による検索処理での日本語取り扱い(Win32,S-JIS) -> 9924 2004-07-29 11:26 ┗[Koichi Taniguchi <ta] 9926 2004-07-29 13:44 ┗["Mamiya Masataka" <x]