ロケール

いつもサーバOSは、Linux を使わせてもらっている。
そしてロケールは、LANG=”en_US.UTF-8″ を設定している。この設定で特に問題なく全てのサーバを運用しているけど、あるクライアントさんから、osCommerce をインストールして欲しいと依頼があった。
早速インストールして、動作チェックをしてみると、「商品検索」の日本語検索がうまく機能しないことに気付いた。MySQL のデータや、php.ini の設定を色々といじってはみたものの、症状に変化無し。入力した日本語文字列の内容を確認すると、クエリーに入った文字列は確かに文字化けを起こしていた。
ネットで同じような事象について検索するも、手がかりになるような情報を見付けることができなかったので、自分のLinuxクライアントに、同じようにosCommerceをインストールしてみた。 すると、日本語検索ができる。
ということはロケールの問題だろうと、依頼のあったクライアントさんのサーバの設定を、「LANG=”en_US.UTF-8″」から「LANG = “en_US.UTF-8:ja_JP.eucJP”」に変更して、apache を再起動した。お〜っ、日本語検索ができるようになった〜ぁ。
問題の解決はできたけど、???
osCommerce のソースをみると、こんな記述が。
@setlocale(LC_TIME, ‘ja_JP’);
なにやら、setlocale は、ロケール設定により影響を受ける関数らしい。
ということは、指定されたロケール(ja_JP)が存在しなかったので、設定されているUTF-8 が返されクエリーに入った日本語文字列が化けてたってこと?とりあえず、このような場合の対処方法が分かったから良しとしよう。

Related Posts:

Speak Your Mind

*