We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 28314
    • 48 Posts
    お久しぶりです、最近復活しましたSSMxです。

    掲題の件ですが、結論から書きますと、データベース、MODx共にUTFで設定していますが、
    (1)読み込む際は MySQL 上の UTF は正しくMODx上で表示されます。
    (2)しかしドキュメント以外の、リソース(テンプレ〜プラグインまで)、WEBユーザ、MODxの設定(例えば サイト 名)すべてが書き込み時に文字化けします。

    phpMyAdminでMySQL確認すると(2)で書き込まれた内容はドキュメントは正常に日本語で登録され、それ以外は文字化けして登録されている。
    phpMyAdminにて日本語に修正すると、正しくMODx上では表示されます。編集ボタンを押して直後に保存すると文字化けして登録されます。

    明らかに、書き込み時の問題だと思っています。

    php.iniをみると

    mbstring.internal_encoding = EUC-JP
    mbstring.http_output = SJIS

    あきらかにこれがあやしい。 >:(  
    ...と分かっているのですが、現行のCMSがこれで動いているので下手にiniファイルには手が出せずにいます。

    しかし、ドキュメント類は php.ini に影響されずにUTFで書き込まれているのを見ると、回避策があるように思えます。
    どなたか参考になるサイトや、事例など教えていただけないでしょうか?





      初心者代表 (やらいでか!http://ssmk.blogspot.com/)
      • 36592
      • 970 Posts
      こんにちは~

      文字化けしているとのことですが、具体的にどんな風になるんでしょうか?
      ブラウザ上で文字化けしている時、強制的に文字エンコードをEUCとかSJISにしたら正しく表示されますか?
      MODxの言語設定はjapanese-utf8なのでしょうか?
      あと、MODxのバージョンは?
        • 28314
        • 48 Posts
        tkfmさんお早い回答ありがとうございます。
        少々、なれないLinuxで時間がかかってしまいました。(一年前から言ってますが)
        エンコードを変えても状況は変わりません。スクリーンショットを見ていただけたらお分かりになるかもしれませんが、
        文字が掛けてるというより????に変換されているというような感じです。 japanese-utf8 です。

        これが、ドキュメントは文字化けしない...というやつです。


        これら????になっているのは、多分 テスト等と入力





        サイト名に日本語を登録しても


        保存を押すと文字化けします。
          初心者代表 (やらいでか!http://ssmk.blogspot.com/)
          • 36592
          • 970 Posts
          う~ん、化け方を見るとやはり文字コードのような気がしますね...
          確かに下手にphp.iniの設定を変えると既存の日本語データが化ける可能性もありますし。

          ちなみに、manager/include/config.inc.phpの最初の方の
          $database_connection_charset = 'utf8';

          の行はこうなっているんでしょうか?
            • 28314
            • 48 Posts
            大事なところを下記存じました。
            confitg.inc.phpはちゃんとutf8になっています。

            mbstring.internal_encoding = EUC-JP
            mbstring.http_output = SJIS

            とあるので、たぶんMODx上でUTF8で書き込まれた内容をMySQLにEUCで書き込んでいるものと思います。
            しかし、ここで謎なのは、なぜドキュメント部だけはUTFで書き込めているのか?
            これが理解できれば、今回の問題の解決の鍵となると同時に、MODxそのものの各書き込み部によって、
            適用されるエンコードがphp.iniに依存する部分とMODxに依存する部分がある、整合性のとれていない問題も浮き彫りにされるのではないでしょうかね?

            また、php.iniは出力をsjisに指定しているにもかかわらず、ちゃんとUTF8で出力されるところが奇怪ですねぇ??
              初心者代表 (やらいでか!http://ssmk.blogspot.com/)
              • 36592
              • 970 Posts
              う~ん... 私にはこれ以上は手に負えませんね~ undecided
              こちらに登場するMySQLやPHPに詳しい皆さんからフォロー頂けるとありがたいのですが...
                • 21772
                • 69 Posts
                こんにちはnoriです。

                見当違いの意見でしたらすいません。
                環境が書いてないのでわからないのですが、windowsでXAMPP
                環境で動作させて検証している場合、php.iniが複数存在していると
                思います。

                modx管理画面→レポート→システム情報→phpinfo()

                のLoaded Configuration File 部分で参照しているphp.iniの
                を確認してみてはどうでしょうか?
                  • 28314
                  • 48 Posts
                  noriさん、ありがとうございます。

                  php.iniの確認はWEBサーバ管理者を通してじゃないといけないので、ちょっとレスポンスに時間がかかりそうです。
                  でも、環境はCentOSなので、そこが問題じゃないのかな?と。

                  あと、大半はphp.iniに依存していますが、依存しないドキュメント部があるので、MODx側の構造が知りたいですね。


                  tkfmさん、ありがとうございます。

                  そちらの方にも話題を振ってみます。
                    初心者代表 (やらいでか!http://ssmk.blogspot.com/)
                    • 28314
                    • 48 Posts
                    途中経過です。少し切り口のヒントを見つけたと思っていたのですがだめでした。

                    php.ini の設定を、.htaccess でローカルのフォルダで設定できるようです。
                    そこで、ルートと/manager 配下の.htaccessに

                    php_value mbstring.language neutral
                    php_value mbstring.internal_encoding UTF-8
                    php_value mbstring.http_output UTF-8
                    php_value default_charset UTF-8

                    を追加してみましたけど全く解決しませんでした。
                    .htaccessは有効です。

                    続きはこちらからお願いします≫http://modxcms.com/forums/index.php/topic,20957.0.html
                      初心者代表 (やらいでか!http://ssmk.blogspot.com/)