We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 28314
    • 48 Posts
    とりあえず、応急処置がおわりましたが手こずりました。
    まず、結論からですが、MODx上でUTF8で正常に動くようになる。
    MySQL上での文字化けは解決せず。
    問題が不可解(サーバー上の要因が大きいため)で、次期サーバーのバージョンアップで解決すると見込んで今回の暫定対処は終了。

    対処内容
    DBを latian1_swedish_ci で作成
    /manager/includes/config.inc.phpの
    $database_connection_charset = ’utf8’;
    ↓ utf8を記述しない
    $database_connection_charset = ’’;

    解決策を見いだせず、だめもとでやった対処です。
    OSCのDBがすべてlatian1になっていたことをヒントに、DBを latian1 で作成しなおす。
    以前、config.inc.phpの utf8 を書き込むと文字化け●▼■から????に変わってしまったので、defoultに変える。
    (たぶんDB標準のlatianに適した書き込み方になったんじゃないかな?)

    ま~とりあえず、MODxのバックアップ機能自体は文字化け起こさないから、新しく環境をかえるときも何も問題ないだろうと思ってます。
    そう信じてます。 ってか、あまり考えたくないですね。

    みなみなさま、かなりのお時間を投入していただきありがとうございました。
    また、大した実績が出せなくてすみませんでした。orz
      初心者代表 (やらいでか!http://ssmk.blogspot.com/)
      • 28073
      • 164 Posts
      もう解決されてるかもしれませんが… :’(

      僕も最近文字化けを経験しました。
      SSMxさんとはちょっと現象は違うしMODxのバージョンも違うのですが、参考になれば幸いです。

      http://ayd.jp/p_blog/archive-200806/article-1213119654.html

      こちらの文字化けの場合、SET NAMESを書く位置が結構重要だったようです。
      正直、原因は良くわかってないです huh

        • 28314
        • 48 Posts
        soushi さんわざわざありがとうございます。

        とりあえず、oscの方も文字化けしてるので放置。ぶっちゃけ、もういいや、サーバーを変えるときに治るだろう(笑)くらいに思ってます。
        で、ちょっと作業量がいっぱいいっぱいで、今はテストが難しいです。

        時間見つけ次第、テストをして結果報告させていただきます。

        ちなみに、これは

        onfig.inc.phpの utf8 を書き込むと文字化け●▼■から????に変わってしまったので、defoultに変える。

        に関しての話ですよね。

        個人的には、あまりMODx自体のコードは触りたくないところがありまして,,,環境が変わったと時にリストアなくしてMODxを再構築するのが困難になるからです。
        ですので、先回までの障害がおこったのを再現する環境を新たに構築しテストするので結果報告はかなり遅めになります。

        でも、このスレッド?が誰かの役に立てばと...頑張ってみます。
        わざわざ、ありがとうございました。
          初心者代表 (やらいでか!http://ssmk.blogspot.com/)
          • 36592
          • 970 Posts
          最近のSVNアップデートで、こんな話題があり実装された模様です。
          私はMySQL関係は全く分からないので話題についていけていませんが、MySQLの設定によっては日本語の文字化けが起こりそうなだぁ~と斜め読みしていました。
          詳しい方が読めば、何がどう変わったかわかるのかも?
          場合によっては、修正の提案も必要なのかもしれませんが...私には... huhです。 :’(
            • 28314
            • 48 Posts
            英語じゃん orz

            ...すみません tongue
              初心者代表 (やらいでか!http://ssmk.blogspot.com/)
              • 15497
              • 117 Posts

              ■現象の概要
              文字「~」(チルダ)が文字化けして「?」になる場合がある。
              (文字化けした状態でMySQLデータベースに保存されている。)
              文字化けする状況(現在までにわかっている範囲ですが)は以下です。
              ○ドキュメント新規作成(編集で入力しなおして保存すると文字化けしない)
              ○チャンク(新規作成も編集も、どうやっても文字化けする)
              このスレッドをざっと見たところ、同様の報告がなかったようなので(このスレッド長いので、見落としてたらすみません)、とり急ぎ報告だけさせていただきます。

              ■化ける文字
              今のところ、いくらかテストした結果わかっているのは、
              機種依存文字以外では「~」(チルダ)が文字化けするようです。
              (丸囲み数字やローマ数字等の機種依存文字も同様に化けます)
              「〒」や「←」のような記号でも、機種依存文字以外なら化けないようです。
              ちなみに、
              Macの「〜」(波ダッシュ)は文字化けしません。

              ■環境
              MODx 0.9.6.1p2
              PHP 5.1.6
              MySQL 5.0.22(サーバ側デフォルト:EUC)
              config.inc.php/$database_connection_charset = ’utf8’;
              (その他、MODx側は全てutf8(Japanese-utf8)で設定している…はず)
              MySQLの各テーブルの当該フィールドは「utf8_general_ci」に設定されている。
              ブラウザ:WindowsXP/IE6、および、Firefox2、Firefox3

              ■ドキュメントの場合の応急的対処法
              空で新規作成してから、編集で原稿を埋めて保存する。
              ということで、対応しています。

              ■チャンクの場合の応急的対処法
              MODx管理画面で保存した後、
              データベースをphpMyAdmin等で直接修正し、サイトのキャッシュをクリアする。
              ということで、対応しています。

              ■原因など
              現状では、わかっていません。

              急ぎの仕事があるので、とりあえず、上記の方法で逃げていますが、
              後ほど、ドキュメントの場合に新規と編集とで結果が違うということをヒントに、
              save_content.processor.php等を調べてみたいと思っていますが、
              もし、上記の解決策をご存知の方がいらっしゃったら、ぜひお願いします。

              ※追記)波ダッシュとチルダを混ぜて使ってしまっていたので、修正しました。
                ★日本公式フォーラム2009年9月1日本格始動!★
                http://modxcms-jp.com/bb/

                ▼ウェブ屋のCMS→modxヒキダス流(備忘録)
                http://d.hatena.ne.jp/hikidas_ikeda/
                ▼制作済みHTMLページをmodxで更新するデモ
                http://www.hikidas.com/hikidas/modx_document/modx_demo_osc2009kansai.php
                • 33488
                • 429 Posts
                全角チルダ問題だとすると、
                http://bbs.wankuma.com/index.cgi?mode=al2&namber=19703&KLOG=38
                辺り参考になりませんか?
                  • 28073
                  • 164 Posts
                  こんばんわー。

                  新規作成(INSERT)で文字化けして更新(UPDATE)の時に文字化けしない現象は僕も一度体験しました。
                  こちらはSET NAMESを書きまくってなんとか文字化けはしないようになっています。

                  もし参考になれば smiley
                  http://ayd.jp/p_blog/archive-200806/article-1213119654.html

                  それで、原因に関してはイマイチわかっていません :’(
                    • 15497
                    • 117 Posts
                    soushiさん、Zeroさん
                    ありがとうございます。

                    チャンクについては、まだ検証できていないのですが、
                    ドキュメントに関して、今までわかった範囲でご報告します。

                    ソースを見た限りでは、新規作成と編集の違いは無いように思いますし、
                    実際、値を追っかけていっても、INSERT、UPDATEの直前まで正しく入っているようでした。

                    そこで「save_content.processor.php」の新規作成のINSERTの直前(259行目あたり)に、
                    @mysql_query("SET NAMES {$database_connection_charset}");
                    

                    を入れたところ、新規作成でも文字化けしないようになりました。

                    次に、この行をコメントアウトして、新規作成を行なったところ、
                    見事に文字化けしました。

                    ちなみに、UPDATEの直前でも、同じ事をしてみましたが、
                    こちらは、入れても入れなくても文字化けは起こりませんでした。
                    (ま、当たり前ですね?)

                    MySQLのリファレンスマニュアルの「9.4. 接続のキャラクタセットおよび照合順序」
                    http://dev.mysql.com/doc/refman/5.1/ja/charset-connection.html
                    の真ん中あたりに、以下のような記述がありますが、
                    この違いが、INSERTには影響し、UPDATEには影響しない?
                    (それとも、単なる不具合なのかも?)

                    SET NAMES ’x’ステートメントは下記の3ステートメントと等価です。
                    SET character_set_client = x;
                    SET character_set_results = x;
                    SET character_set_connection = x;

                    SET CHARACTER SET xステートメントは下記の3ステートメントと等価です。
                    SET character_set_client = x;
                    SET character_set_results = x;
                    SET collation_connection = @@collation_database;

                    取り急ぎ、ご報告まで。
                      ★日本公式フォーラム2009年9月1日本格始動!★
                      http://modxcms-jp.com/bb/

                      ▼ウェブ屋のCMS→modxヒキダス流(備忘録)
                      http://d.hatena.ne.jp/hikidas_ikeda/
                      ▼制作済みHTMLページをmodxで更新するデモ
                      http://www.hikidas.com/hikidas/modx_document/modx_demo_osc2009kansai.php
                      • 15497
                      • 117 Posts
                      チャンクについて調べたことを、ご報告します。

                      チャンクでも、SQL(INSERT、UPDATE)を送信するまでは、正しい値が入っているようです。

                      そこで、「save_htmlsnippet.processor.php」の
                      INSERTの直前(42行目あたり)と、
                      UPDATEの直前(88行目あたり)に、
                      @mysql_query("SET NAMES {$database_connection_charset}");
                      

                      を入れたところ、新規作成でも編集でも文字化けしないようになりました。

                      当然ながら、上記コードをはずすと、元の通り文字化けします。

                      取り急ぎ、ご報告まで。
                        ★日本公式フォーラム2009年9月1日本格始動!★
                        http://modxcms-jp.com/bb/

                        ▼ウェブ屋のCMS→modxヒキダス流(備忘録)
                        http://d.hatena.ne.jp/hikidas_ikeda/
                        ▼制作済みHTMLページをmodxで更新するデモ
                        http://www.hikidas.com/hikidas/modx_document/modx_demo_osc2009kansai.php