[Tep-j-general] Re: レンタルサーバーでの運用

Back to archive index

TAMURA Toshihiko tamur****@bitsc*****
2004年 1月 22日 (木) 11:19:36 JST


こんにちは、田村です。

玉川さん:
> その結果、関数内の先頭の   (general.php 618行目)
>     $search_str = trim(strtolower($search_str));
> で文字化けが発生していました。

あ、そうですか。ありがとうございます。
伊藤さんの件も同じ現象かもしれませんね。

strtolower()は、マニュアルによると

> string のアルファベット部分を すべて小文字にして返します。

ということで、
通常は2バイト文字は変換しない(この問題が起きない)のですが、
こうも書いてありますので、

> 「アルファベット部分」は現在のロケールにより決定されます。 
> このため、たとえばデフォルトの "C" ロケールである場合は、
> ウムラウトA (A) のような文字は変換されません。 

ロケールの影響を受けているのかもしれません。
# しかし、それはどんなロケール?


対策としては、strtolower()をmb_strtolower()に置き換えれば
うまくいくように思います(アルファベットによる検索にも好都合です)。
mb_strtolower()は内部文字エンコーディングにしたがうとのことです。

ただ、他のところでも何か問題が出ないか、
ちょっと心配ですね。

-- 
田村敏彦 / 株式会社ビットスコープ
E-mail:tamur****@bitsc*****
http://www.bitscope.co.jp/




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