[PHP-users 2149] Re: SJIS->EUC bug ?
Yasuo Ohgaki
php-users@php.gr.jp
Tue, 18 Sep 2001 18:55:56 +0900
大垣です。
php-dev@php.gr.jp にも送っています。
文字化けをするどうか作ってしまいました。
少なくとも私の環境では簡単に再現できます。
PHP4.0.7RC2/Apache 1.3.20/Linux-2.4.4,glibc-2.2.2
<?php
// 日本語自動認識用文字列
// You need PHP4.0.7 or later to run
/**
Table
create table test (
str text
);
*/
if (!empty($_POST['q']))
{
$sql = "SELECT * FROM test WHERE str like
'%".$_POST['q']."%'";
$db = pg_connect("host=localhost dbname=yohgaki
user=yohgaki");
$rs = pg_exec($db, $sql);
if (pg_numrows($rs))
{
$result = pg_fetch_array($rs,0);
echo "<pre>";
print_r($result);
echo "</pre>";
}
echo "q=".$_POST['q']." sql=".$sql;
}
else
{
?>
<html>
<head></head>
<body>
<form method="post">
<input type="text" name="q">
<input type="submit">
</form>
</body>
</html>
<?php
}
?>
クエリ用の文字に“箱”と一文字だけ入れると間違って変換されます。
q=U+222 sql=SELECT * FROM test WHERE str like '%U+222%'
“あ箱”、”箱あ”では問題ありません。
q=箱あ sql=SELECT * FROM test WHERE str like '%箱あ%'
q=あ箱 sql=SELECT * FROM test WHERE str like '%あ箱%'
> いつもお世話になっております。船木@秋田県立図書館です。
> 環境は、FreeBSD4.2+PHP4.0.6+apache1.3.20+PostgreSQL7.1.2です。
> PHPはmbstring付きです。
>
> で、当館で運用しておりますWeb蔵書検索において、書名に
> 「箱」(EUC:C8A2) 、「柊」(EUC:C9A2)、「國」(EUC:D4A2)を
> 指定しますと、pg_execが正常終了しないと言う現象が起きています。
> # ごらんの通り、2バイト目がA2のヤツがおかしい。
ソースは見ていませんが、mb_filter辺りにバグが在るのかも知れません。
--
Ohgaki, Yasuo (大垣 靖男)
Mail: yohgaki@dd.iij4u.or.jp