[Tep-j-general] Re: 検索時にSQLの文字バケ

Back to archive index

Emmy Matsuo emmy****@sheha*****
2005年 11月 14日 (月) 14:26:51 JST


お世話になっております。松尾です。


> http://lists.sourceforge.jp/mailman/archives/tep-j-general/2005-May/015736.html
> 
> ↑この件ではないんでしょか?

すみません、説明が少なかったかもしれません。

当初は、半角英数字以外が全く検索できなかったため、ホスティング業者に
問い合わせたところ、/etc/my.cnf の

> default-character-set=ujis

をコメントアウトして動作確認完了、という報告がありました。

しかし「動物」等のキーワードで検索すると検索エラーとなるため、上記で
はまだ様の示されたURLと同じページを見て .htaccess に

> php_value mbstring.http_input EUC

と書いてみることで、一応ヒットするようにはなりました。
ところが、キーワードに関係ない商品まで引っかかってしてしまう、というのが
いま悩んでいる問題です。


> 文字化け云々の場合は、phpinfo()のmbstring部をコピペして添付しといて頂け
> るとハナシが早いです。

mbstring関連の部分は、以下の通りです。

mbstring.detect_order     auto   auto
mbstring.http_input      auto   auto
mbstring.http_output      SJIS   SJIS
mbstring.internal_encoding   EUC-JP  EUC-JP
mbstring.substitute_character no value no value


> 文字列の壊れ方が広範囲で、かつ比較的小規模なのが気になります。なんかSJIS
> を経由してるっぽい壊れ方なんすけど…。

mbstring.http_output をEUC-JPにするといいのでしょうか。

関係あるかどうか分かりませんが、化けた文字とEUCの文字コード表を見比べて
みると、

「草」(c1f0)→「瘰」(e1f0)
「ね」(a4cd)→「ろ」(a4ed)
「ッ」(c3a5)→「ャ」(e3a5)

c が e になっているようです。
(それが何を示しているのかは分からないのですが)


> > >  $search_str = mb_convert_kana($search_str, "sKV");
> > >  $search_str = ereg_replace('[[:space:]]+', ' and ', trim($search_str));
> 
> どっかで見たような(^^;;

大変重宝しております。ありがとうございます。
上記2行をコメントアウトした上で検索の動作確認をしてみましたが、
ログの文字化け+関係ない商品がヒットする症状は変わりませんでした。


> なお、上記改造をした場合は(検索語の入力方法が大きく変わっちゃうので)必
> ず検索ヘルプを修正するようにしてください。

そうですね。というか、ヘルプ自体を無くしました。

------------------------------ 
松尾 恵実
emmy****@sheha*****




Tep-j-general メーリングリストの案内
Back to archive index