We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 28073
    • 164 Posts
    こんばんわ smiley

    SSMxさんの設定キャプチャを見てちょっと気になったことが…。


    character set database = latin1
    character set server = latin1

    character set connection = utf8
    character set client = utf8

    クライアントとデータベース間で文字コードの指定が違うのが悪さしている気がします。
    [参考リンク:クライアントとサーバーのキャラクターセットの確認]
    http://www.mysql.gr.jp/frame/modules/bwiki/index.php?FAQ#f1b67614

    もしmy.cnfがいじれるのならばskip-character-set-client-handshakeを設定してみてはどうでしょうか?
    …と、思ったのですが、MySQL4.1.12ではまだskip-character-set-client-handshakeがサポートされてないかもしれない… :’(

    ちなみに僕のMySQLの文字コード環境もZeRoさんと同じでした。
    参考までに smiley

      • 28314
      • 48 Posts
      皆さん、総勢でありがとうございます。

      soushiさんの内容が、一番臭うところだと感じてはいるのですが、現行のCMS(osCommerce)に影響があったら…
      と考えると恐ろしくてちょっと、はばかってしまいます。

      tkfmさん、自分もMySQL4では文字コードの問題は解決されていると認識してたのです。

      land.to側の環境を調べたり、またutf8のインストール例などを調べればヒントがでてくるのかな?と思っています。
        初心者代表 (やらいでか!http://ssmk.blogspot.com/)
        • 33488
        • 429 Posts
        MySQLの4.0系でもUTF8を入れることは可能です。
        但し、検索に問題があるかも ってことですね

        対応している文字コードとして、utf8はないので、utf8の文字コードをそのままujis環境で使うことになるかと思います。
        なので、なんかおかしなことが発生するかもですね。
        4.0系だとcharsetのSQLは対応してないんで、この設定はあんまり関係ないですね。

        「echoも結果は同じでした。 」 同じというのは、SQLとしては日本語はちゃんと表示されたってことですよね?
        でも、phpmyadminを見ると文字化け? と。 この場合だと、MySQLのクライアントの文字コードがutf8じゃないからっていう解釈にはなりそうなんですけど・・


        oscはujis(euc-jp)ですよねぇ、確か。

        かなりなぞですね
          • 28314
          • 48 Posts
          ちょっとレベルが高いはなしですねぇ
          対応している文字コードとして、utf8はないので、utf8の文字コードをそのままujis環境で使うことになるかと思います。
          utf8_generic_ci がそれにあたるわけではない、ということなんですよね(?_?)
          ただ、それだと文字情報までは失わないのでは?(推測ですが)
           というのは文字が■や▲に化けるのはわかるのですが、? ? ? ? ?に変換されているようです。

          4.0系だとcharsetのSQLは対応してないんで、この設定はあんまり関係ないですね。
          ここら辺になってくるとさすがにパンク。

          それで吐き出されたSQLは日本語で表示されました。

          で、補足なんですけど、調べてみたらoscはMySQL内部で文字化けしてました。orz
          サーバ立てた業者訴えてやりたいです(怒

          まいったなぁ。糸口が見えてきませんね、はは...皆さん引っ張りまわしてすみません。

          進捗がありしだい、書き足していきますので、お時間がある時に突っ込んでいただけたらうれしく思います…
            初心者代表 (やらいでか!http://ssmk.blogspot.com/)
            • 33488
            • 429 Posts
            Quote from: SSMx at May 07, 2008, 06:14 AM

            ちょっとレベルが高いはなしですねぇ
            対応している文字コードとして、utf8はないので、utf8の文字コードをそのままujis環境で使うことになるかと思います。
            utf8_generic_ci がそれにあたるわけではない、ということなんですよね(?_?)
            ただ、それだと文字情報までは失わないのでは?(推測ですが)
             というのは文字が■や▲に化けるのはわかるのですが、? ? ? ? ?に変換されているようです。
            えーと、おおよそその通りですね。
            ようするにutf8_generic_ciっていうもの自体が4.0系にはない ってことですね。
            なので、4.0系で文字化けっていうのは微妙な気がするんですけど、そうなると怪しいのがphp.iniとかhtaccessでのPHPの設定関係ですかねぇ。
            けど、そーなると部分的にOKだったりNGだったりってのがつじつまが合わないんですが・・・。
            試しにlandではeuc-jpで立ててみるってのうのはどうでしょうか?


            4.0系だとcharsetのSQLは対応してないんで、この設定はあんまり関係ないですね。
            ここら辺になってくるとさすがにパンク。

            それで吐き出されたSQLは日本語で表示されました。

            で、補足なんですけど、調べてみたらoscはMySQL内部で文字化けしてました。orz
            サーバ立てた業者訴えてやりたいです(怒

            まいったなぁ。糸口が見えてきませんね、はは...皆さん引っ張りまわしてすみません。

            進捗がありしだい、書き足していきますので、お時間がある時に突っ込んでいただけたらうれしく思います…
            文字コードは、euc-jp(ujis)でphpmyadminから確認したら文字化けってことですか?
            4.1系または5.x系のMySQLで表面上化けないけど、内部のデータが実は文字コードの設定が間違っていたっていうのはボクも何度かやっちまったことがあります。笑
              • 28314
              • 48 Posts
              あ~恥ずかしい話なんですけどoscはみな latian でした。

              業者は動いているうえでは何も問題ないでしょ?って交わして、担当者も辞めてトンズラ。
              けど、そーなると部分的にOKだったりNGだったりってのがつじつまが合わないんですが・・・。
              だから、DBでもなく、php.iniにもこれといった問題もなく、land.toで同じ現象(こちらは文字情報までは失わず)になってくることを考えるとMODx側のロジックに問題があるのでは...?と思ってしまします。

              実際、echoを追加したときも、結果を吐き出したのも部分的だったし...SQL書き込み時にすべてあのロジックを通っているわけではないということですよねぇ??
                初心者代表 (やらいでか!http://ssmk.blogspot.com/)
                • 33488
                • 429 Posts
                Quote from: SSMx at May 07, 2008, 10:42 PM


                実際、echoを追加したときも、結果を吐き出したのも部分的だったし...SQL書き込み時にすべてあのロジックを通っているわけではないということですよねぇ??
                ロジックってどこを仰っているのかわかりませんが、基本的にはコンテンツもシステム設定の情報もファイルの場所は別々ですが、やっていること(プログラムロジック)はほぼ一緒なんですよね。
                使う関数がPHPの関数を呼んでるだけなんで、SQLを組み立てる部分がテーブルによって当然違いますが、INSERT文を作るのはMODxの仕事で、MySQLに入れてくれるのがPHPの中なんです。
                なので、Echoで表示されるINSERT文であるSQLの文字がおかしいとすれば、MODxソースの問題かも知れませんし、文字列はmysqlのESCAPE関数で変換されたりするのでPHPの中かも知れません。


                吐き出したのも部分的っていうのは、どういうことでしょうか? 途中で切れているとSQLでエラーになるのですが・・・。
                それともSQL文の内容が日本語文字がおかしいとか???
                  • 28314
                  • 48 Posts
                  説明不足でした。以前、ZeRoさんから、SQL文を表示させてみる試みがありました。
                  http://modxcms.com/forums/index.php/topic,20957.msg155300.html#msg155300
                  その時の save_settings.processor.php と save_content.processor.php のことです。

                  リソース/ユーザ関係は、何も表示されませんでした。
                  というのも説明不足でして、ドキュメントやMODxの設定は保存すると、 SQL= と出力されますが、
                  リソース/ユーザ関係は、保存をしても、通常どおりの挙動で...つまり save_settings.processor.php と save_content.processor.php は絡んでいない...
                  ということは、MODxは保存をするときにそれぞれ使うロジックが違うということになると思ったんです。(出力部は一意的に管理されているという概念が頭から離れませんでした)
                  でも実際は
                  save_settings.processor.php → MODxの設定の保存
                  save_content.processor.php → ドキュメントの保存
                  ということだったんですね、多分。納得です。
                  リソース/ユーザ関係は、何も表示されなくてとうぜんですね。
                    初心者代表 (やらいでか!http://ssmk.blogspot.com/)
                    • 33488
                    • 429 Posts
                    なるほどです。
                    save_XXXXがそれぞれの担当になっていますので、同じようにechoを埋め込めば表示されるはずです。
                    ほとんどが、$_POSTをmysql_escape_string関数でかぶせてSQL文を生成して、mysql_queryで実行っていうパターンになっています。(更新はUpdateですが)
                    ものによっては、複数のテーブルを参照して入れ込むとか(ドキュメントとかそうです)になっているんで、SQL文を作る部分は個別になっちゃいます。
                    $_POSTで文字化けしてなくて、SQL文の表示で文字化けしたらmysql_escape_stringが怪しいのか、その手前の処理でなんかやっているせいなのかってところなんですけど・・・手前の処理でなんかやってたらほかのユーザからも声があがりそうなんでMODxソースっぽくないなぁ っていう気がしてますが・・かといって、原因が特定できないのでなんとも・・・

                    なんかありそうだけど、なんだろう?? みたいな・・・。

                    そもそものHTMLソースが実はUTF-8じゃなかった(ブラウザからみたら正常に見えるけど) ってオチは・・・・なさそうですね。

                    どなたか似たような症状に陥った人が救世主として現れるのを期待したいところですね。
                      • 28314
                      • 48 Posts
                      遅くなりました。正直つまりましたね〜
                      そもそものHTMLソースが実はUTF-8じゃなかった(ブラウザからみたら正常に見えるけど) ってオチは・・・・なさそうですね。
                      多分 undecided ブラウザのエンコードがutfで(っていうか、MODxの概観の設定でutfになっていたら、ブラウザもutfだろうし、MODxの設定にてサイト名を書き込んだら、それもutfになになりますよねぇ...多分(汗))

                      いずれにしても環境(サーバ)が怪しいですね。

                      ですので...もう少しコード回りでpostされるsql文を確認してみますが、( >:(横文字の使いかたが正しいのか...)
                      応急処置としてEUCでやってみようかと思います。(ただこちらはリソースが表示されなかった事がありました)

                      phpMyAdminで文字化けは回避できないでしょうけど、MODx(ブラウザ)側で文字化けしていなかったら、MODx側のバックアップ機能でも文字化けしないということなんですよね?
                      EUCで現状は凌ぎ、Utf8回りの問題が解決し次第、バックアップのSQL文をutf8にかえ、文字セットを修正し、リストアしていく方向性で応急処置しようと思います。

                      目新しい進捗がありましたら、報告させていただきます。
                      皆様ありがとうございました〜。

                      でも、MODxサイコー♪
                        初心者代表 (やらいでか!http://ssmk.blogspot.com/)