We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 8382
    • 253 Posts
    うーん。この結果は結局ajaxSearch.jsがUTF-8で動いているという事なんでしょうか。
    通常、ページのencodingになるはずなのに...prototype.jsに仕掛けもなさそうだし...
    テンプレートにはちゃんと
    <meta http-equiv="Content-Type" content="text/html; charset=[(etomite_charset)]" />
    となっているように見えますしね。
    もうちょっと調べないとだめだなぁ

    takumiさん。
    $resultsIntroFailureが化けてますので、22行目と23行目のmb_convert_encodingははずして大丈夫では。


      • 21684
      • 46 Posts
      22、23、29行はそのままで、
                $result.='<div class="FSF_ajax_result">';
                $result.='<a class="FSF_ajax_resultLink" href="index.php?id='.strval($row['id']).'" title="' . $row['pagetitle'] . '">' . mb_convert_encoding($row['pagetitle'],"UTF-8","EUC-JP") . "</a>";
                $result.=$row['description']!='' ? '<span class="FSF_ajax_resultDescription">'  . mb_convert_encoding($row['description'],"UTF-8","EUC-JP"). "</span>" : "" ;
                if ($extract) {
                  $result.='<div class="FSF_extract">'. mb_convert_encoding($text,"UTF-8","EUC-JP") . '</div>';

      の変更のみで文字化け解消してるみたいです。 grin

        • 8382
        • 253 Posts
        nobokonokoさん。

        検索に失敗したときのメッセージは化けてませんか?
        化けていなければ、私の間違いです。
          • 29228
          • 109 Posts
          Quote from: eastbind at Apr 09, 2006, 07:27 AM

          うーん。この結果は結局ajaxSearch.jsがUTF-8で動いているという事なんでしょうか。
          プログラマーじゃないので良く分かんないのですが、googleなんかで調べてみると、EUC-JPのページでAjaxを使う対策として
          <?xml version="1.0" encoding="EUC-JP"?>

          を付けると大丈夫とありましたので、AjaxSearchの場合XMLのエンコードが理解出来てない様子です。
          XOOPSのサイトでAjaxチャットを作った方も、結局XMLが上手く認識できずmb_detect_encoding()を使ってエンコードを認識させてましたし。

          で、結果論なんですがEUC-JPのサイトを構築してやってみた所、postしたデータをUTF-8に変換したら日本語検索でヒットし、文字化けはUTF-8を元のEUCに戻したらOKだったと。。。
          Quote from: eastbind at Apr 09, 2006, 07:27 AM

          takumiさん。
          $resultsIntroFailureが化けてますので、22行目と23行目のmb_convert_encodingははずして大丈夫では。
          はい。その通りです。 grin
          $resultsIntroFailureはconvertする必要性は、まったくないですね。(笑)
          と言う事で、EUC-JP環境の方は外して下さい。(^^;
            • 29228
            • 109 Posts
            Quote from: nobokonoko at Apr 09, 2006, 08:22 AM

            22、23、29行はそのままで、
                      $result.='<div class="FSF_ajax_result">';
                      $result.='<a class="FSF_ajax_resultLink" href="index.php?id='.strval($row['id']).'" title="' . $row['pagetitle'] . '">' . mb_convert_encoding($row['pagetitle'],"UTF-8","EUC-JP") . "</a>";
                      $result.=$row['description']!='' ? '<span class="FSF_ajax_resultDescription">'  . mb_convert_encoding($row['description'],"UTF-8","EUC-JP"). "</span>" : "" ;
                      if ($extract) {
                        $result.='<div class="FSF_extract">'. mb_convert_encoding($text,"UTF-8","EUC-JP") . '</div>';

            の変更のみで文字化け解消してるみたいです。 grin
            うはは。 grin
            まったくその通りですね。
            アホを晒しまくってます。(^^;
            いやいやお疲れ様でした。
            私の投稿って、こんなのが多いので適当に付き合って下さい。。。。 embarrassed

            ん?ちょっと修正
            29行目
            $searchString = $_GET[’search’];
            はコンバートしないとダメなんじゃないっすかね?
              • 8382
              • 253 Posts
              いや、takumiさん。
              話は逆なんですよ。jsのリクエストはUTF-8(これはenocdeURIが変換するからです)はいいとして、
              jsへのレスポンスもUTF-8で返すというのが解らないのです。
              レスポンスは特に指定が無ければISO-8859-1を既定と思っても不思議が無いのになぁ。
              リクエストヘッダにもレスポンスヘッダにもcharsetの記述はないし...

              ブラウザが決め込んでいるとしか思えないのですよ。
                • 8382
                • 253 Posts
                nobokonokoさんは、
                mbstring.encoding_translation On
                mbstring.http_input auto
                ですから、PHPがajaxSearch.jsがリクエストしたUTF-8をEUC-JPに変換してくれています。
                だから、22,23,29が必要ないということだと解釈しています。

                しかし文字列によっては変換が失敗するとも限りません。
                AJaxを使うときは
                mbstring.encoding_translation Off
                mbstring.http_input pass
                のほうが良くはないですか?



                  • 21684
                  • 46 Posts
                  23行目は
                  $resultsIntroFailure = mb_convert_encoding($_GET['resultsIntroFailure'],"UTF-8","EUC-JP");

                  逆にしないと化けます.
                    • 20953
                    • 70 Posts
                    私の環境では
                    $searchString = mb_convert_encoding($_GET['search'],"EUC-JP","UTF-8");
                    

                    が入ってないと日本語が通らないようです。
                    22、23行目はデフォルトで問題ないのですが。

                    あ、FFなら化けませんでしたが、OPERAだと化けまくります。
                    SAFARIも化けまくりですね…
                      • 21684
                      • 46 Posts
                      mbstring.encoding_translation On
                      は、Quick Edit文字化け対策なので、できれば外したくないんですね。
                      これのせいで設定が逆なんでしょうか?

                      それとsafariが問答無用で化けるようです。