こんばんわ
ajaxserachのソースを詳しく追ったわけではないですが、ソース中に"mb_convert_encoding($this->searchString, $this->pgCharset , "UTF-8");"という記述があり、文字コードの確認をしているところがあるみたいです。
(grepでひっかけただけなので、間違ってたらすいません)
dimmさんのmodxはUTF-8で動いているので、ここでmb_convert_encoding()にてUTF-8->UTF-8の変換が発生します。
おそらくうまく検索できないのはこんな感じで動いているからではと思います。
MobileConverterを使って出力をShift_JISに変換しているため、特定のページだけは文字コードがShift_JISの状態でブラウザに送られる。
Shift_JIS書かれたページで検索すると、検索ワードがサーバにShift_JISでPOSTされる。
ajaxserach内でUTF-8->UTF-8の変換が発生するが、実際にPOSTされている検索ワードはShift_JISなので不整合が生じる。
mb_convert_encoding()関数は指定した文字コードから外れる文字を削除する機能があるため、Shift_JISな検索ワードは軒並み削除される。
ちなみにMobileConverterは単純なプラグインのためmodxの文字コードを上書きするような機能はなく、単純にhtmlの出力の最後にUTF-8 -> Shift_JISの変換をかけているだけです。
そのため、modx自体の文字コードUTF-8として動作しています。
それで解決方法なのですが、以下の方法があるかなと思ってます。
・MobileConverterでmodxの文字コードも制御する
できるかわからないですが、もしやったとしてもmodxにShift_JIS用の言語ファイルがないのでどこかで問題が起こりそうなので、ダメかもです。
・MobileConverterでPOST(QUERY_STRINGも?)されてきた文字列も変換の面倒を見る
なんとなく良さそうな方法です。
僕の方で改修してもいいのですが、ちょっと私情で自宅のPC環境とNW環境がしばらく使えないので、修正は時間ください…。
・mb_check_encodingを利用する
php.iniの設定ができるようでしたら以下の設定を入れてみると(もしかしたら)動くかもしれません。
コード: 全て選択
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.encoding_translation = On
mbstring.http_input = auto
mbstring.http_output = pass
php.iniの修正はphpの動作全てに影響があるので、慎重に設定していただければと思います。