Subscribe: RSS
  • みなさまこんにちは。
    タイトルが適切でない気もするのですが。。

    マルチバイト環境がネックでMODxの動作に問題が出ている...という報告をよく
    見かけるので、重点的に対応を考えたいと思い、このようなスレッドを立てました。

    少し前にご報告のあった
    ・DittoでRSSが上手く吐き出せない
    http://modxcms.com/forums/index.php/topic,20855.0.html
    といった件も、マルチバイト環境がネックになっているのでは...?というご報告でした。

    また、MYSQL5系の環境にMODx096以上(?)をインストールして日本語を利用すると
    phpMyAdminなどでデータベースを見たとき、化けている...という現象も報告されています。

    このあたりの現象ををきちんと把握して、解決していきたいと考えています。
    私は、現象を報告することはできても、それを解決するために、どこをどのように対応していったらいいのか
    という具体的な部分が、わかりません。。その辺りがわかれば、積極的に対応していきたいです。

    また、日本独自に対応した方が良いのか、あるいは、コアチームに対応してもらった方がいいのか、
    といったようなアドバイスもお願いしたいです。どうぞよろしくおねがいします。。

    メール送信に関しては別途スレッドを立てました。
    http://modxcms.com/forums/index.php/topic,20954.0.html
    • 2008.1.21 現在

      Dittoなどで文字数を切り詰めて表示するとき、末尾が文字化けする ... 未決
       2007.12.20追記 解決策あり(リンク先に記載)...ご助言ありがとうございます laugh
      Ditto やPHxでで文字数を切り詰めるとき(+content:notags:limit=`160`+]など)、末尾が文字化けする(切り詰める文字数によって化けないこともある)。

      MYSQL 4.1以降?で利用しているとき、データベースを見ると2バイト文字が化けている ... 解決策有り(リンク先に記載)
      MYSQL4.1以降のデータベースサーバを利用している環境で、日本語を入力すると、WEB上では問題なく表示
      しているが、phpMyAdmin などでデータベースの内容を見てみると日本語の部分が化けている。

      ロケール設定が有効なサーバで利用している際、ロケールに基づく日付の表示が妙
      XREA+など、ロケール設定が有効なサーバーで利用していると、ロケールに基づく日付の表示が、文字化けしたり、
      管理画面にログインする前、ログインした後で表示が変化したりする。 ... 解決策有り(リンク先に記載)

      管理画面でカテゴリの作成(他)を行うとカテゴリ名が文字化けする ... 解決策有り(リンク先に記載)...bug report 済み
      さくらインターネットなど一部のサーバで、管理画面からカテゴリの作成を行うとカテゴリ名が文字化けしたり、
      ユーザ管理で保存を繰り返すと「フルネーム」が文字化けしたりする。

      Jotのデフォルトテンプレートに日本語を書くと文字化けする...解決策はこちら

      managermanager で、タブや、フィールド名に日本語を使うと化ける...[b]解決策あり
      • Dittoなどで文字数を切り詰めて表示するとき、末尾が文字化けする
        解決しました。解決策はこちらに記載されています。ご助言ありがとうございます。^^。
        • Quote from: MEGU at Dec 18, 2007, 01:51 PM

          MYSQL 4.1以降?で利用しているとき、データベースを見ると2バイト文字が化けている ... 解決策有り(リンク先に記載)
          MYSQL4.1以降のデータベースサーバを利用している環境で、日本語を入力すると、WEB上では問題なく表示
          しているが、phpMyAdmin などでデータベースの内容を見てみると日本語の部分が化けている。

          こんばんは~

          もうサイトができるよ!というところで↑に気がついた私ですが、泣く泣くコピペでコンテンツをなおしているところです。

          が、リソース>リソース管理>テンプレートの中のテンプレート内の文字化け(用テンムetc.)を日本語になおして保存をすると日本語は表示されず、日本語の部分がまた文字化け(今度は、?のオンパレードです :’()になってしまいます。テンプレートに日本語、使っちゃダメなのかな。。。。一難去ってまた一難

          どなたかお救いください。 huh
          • こんにちは。
            私では役に立ちそうもありませんが。。

            もう少し、詳しい状況をご説明頂けますか?

            別スレから拾ってきました。
            ご使用環境は、以下ですね。
            MODx 0.9.6.1
            PHP 5.2.1
            MySQL5 5.0.27
            DBは、utf8で指定して作りました。照合順序は、utf8_general_ciとなっています。
            そして、WEBサイトの運用キャラクタコードセットはutf-8ですね?

            その状態で日本語を入力していき、サイト上の表示は問題ないが、
            データベースの文字化けに気づいたので、includes/config.inc.php で
            「$database_connection_charset = ’utf8’;」を指定した。

            すると、今度はサイト上で文字化けを起こしたので、管理画面から修正中。ということですよね。

            それで、ドキュメントに日本語を入力して保存しても文字化けするのでしょうか。
            あるいは、文字化けを起こすのは、テンプレートだけでしょうか。
            (ちなみにテンプレートの中でも日本語使えます)。
            • Quote from: MEGU at Dec 21, 2007, 08:01 AM

              こんにちは。
              私では役に立ちそうもありませんが。。

              もう少し、詳しい状況をご説明頂けますか?

              別スレから拾ってきました。
              ご使用環境は、以下ですね。
              MODx 0.9.6.1
              PHP 5.2.1
              MySQL5 5.0.27
              DBは、utf8で指定して作りました。照合順序は、utf8_general_ciとなっています。
              そして、WEBサイトの運用キャラクタコードセットはutf-8ですね?

              その状態で日本語を入力していき、サイト上の表示は問題ないが、
              データベースの文字化けに気づいたので、includes/config.inc.php で
              「$database_connection_charset = ’utf8’;」を指定した。

              すると、今度はサイト上で文字化けを起こしたので、管理画面から修正中。ということですよね。

              それで、ドキュメントに日本語を入力して保存しても文字化けするのでしょうか。
              あるいは、文字化けを起こすのは、テンプレートだけでしょうか。
              (ちなみにテンプレートの中でも日本語使えます)。

              MEGUさん

              お返事、ありがとうございます。

              お返事に書いていただいた通りです。

              ウェッブ上、日本語表示:正常
              DB上、日本語文字化け(ブログ用テンãƒ)

              config.inc.php で
              「$database_connection_charset = ’utf8’;」を指定

              ウェッブ上も日本語文字化け(ブログ用テンãƒ)
              管理画面での日本語文字化け(ブログ用テンãƒ)

              管理画面の文字化けを日本語へ修正中

              そして、WEBサイトの運用キャラクタコードセットはutf-8です。


              ドキュメントの方は、修正後、問題なくウェッブ上でも日本語表示されていますのでリソース管理内での文字化けです。

              テンプレートの文字化けについて:

              テンプレートの名前、説明、中身の日本語の修正前(config.inc.php で
              「$database_connection_charset = ’utf8’;」を指定した直後)は、文字化けブログ用テンãƒです。日本語に修正、保存すると、すべて?に変わってしまいます。ウェッブページ上も?になっている。新しくテンプレートを最初から作り直しても状況は、変わりません。

              リソース管理内の日本語カテゴリー名の文字化けについて:

              テンプレートリスト内の日本語のカテゴリー(名前は、「カテゴリーなし」)は、文字化け修正前(config.inc.php で「$database_connection_charset = ’utf8’;」を指定した直後)から?になっています。新しく日本語のカテゴリーを作ると正常に表示されます。テンプレートに関しては、カテゴリーについては、チャンクの管理でも、「カテゴリーなし」があるのですが、こちらも?に化けています。「リソース一覧」の「カテゴリーなし」は、正常に表示されています。
              • こんにちは。情報ありがとうございます。

                詳しいことはわからないのですが...。データベースの各フィールドにも
                照合順序っていうのがありますよね?それも、すべて「utf8_general_ci」に
                なっているでょうか(照合順序がないフィールドもあります。数値とかかな...)。

                テンプレートは、たぶん「modx_site_templates」だと思うんですけど。。
                • MEGUさん、

                  お返事、ありがとうございます。

                  Quote from: MEGU at Dec 21, 2007, 03:56 PM

                  データベースの各フィールドにも
                  照合順序っていうのがありますよね?それも、すべて「utf8_general_ci」に
                  なっているでょうか(照合順序がないフィールドもあります。数値とかかな...)。

                  照合順序がないフィールドもすべて「utf8_general_ci」になっています。

                  あれから分かったこと(当たり前なことかもしれませんが :’()と文字化けの経由をまとめさせていただきます。

                  A.  ドキュメント

                  ウェッブと管理画面上: 日本語正常表示
                  DB: 日本語文字化け(ブログ用テンãƒ)

                  1.config.inc.php で「$database_connection_charset = ’utf8’;」を指定

                  ウェッブと管理画面上: 日本語文字化け(ブログ用テンãƒ)
                  DB: 日本語文字化け(ブログ用テンãƒ)

                  2.管理画面上で日本語文字化け(ブログ用テンãƒ)を日本語に書き換え、保存。

                  ウェッブと管理画面上: 日本語正常表示
                  DB: 日本語正常表示

                  3.次に試験的にconfig.inc.php で「$database_connection_charset = ’’;」に戻す(指定なし)
                  管理画面上: 日本語文字化け(??????)
                  ウェッブ上: 日本語正常表示
                  DB: 日本語文字化け(??????)

                  A.  リソース管理(テンプレートの日本語)

                  ウェッブと管理画面上: 日本語正常表示
                  DB: 日本語文字化け(ブログ用テンãƒ)

                  1.config.inc.php で「$database_connection_charset = ’utf8’;」を指定

                  ウェッブと管理画面上: 日本語文字化け(ブログ用テンãƒ)
                  DB: 日本語文字化け(ブログ用テンãƒ)
                  テンプレート及び及びチャンクでのカテゴリー名: 日本語文字化け(??????)
                  リソース一覧でのカテゴリー名: 日本語正常表示

                  2.管理画面上で日本語文字化け(ブログ用テンãƒ)を日本語に書き換え、保存。

                  ウェッブと管理画面上: 日本語文字化け(??????)
                  DB: 日本語文字化け(??????)
                  テンプレート及び及びチャンクでのカテゴリー名: 日本語文字化け(??????)
                  リソース一覧でのカテゴリー名: 日本語正常表示

                  3.次に試験的にconfig.inc.php で「$database_connection_charset = ’’;」に戻す(指定なし)

                  ウェッブと管理画面上: 日本語文字化け(??????)
                  DB: 日本語文字化け(??????)
                  テンプレート及び及びチャンクでのカテゴリー名: 日本語正常表示
                  リソース一覧でのカテゴリー名: 日本語正常表示

                  以上です。

                  問題は、リソース管理内の日本語表示ですが、config.inc.php で「$database_connection_charset = ’utf8’;」を指定した後までは、ドキュメントと同じ状態です。ここで日本語を入力し保存するとconfig.inc.php で「$database_connection_charset = ’’;」に戻した(指定なし)状態と同様な文字化けの仕方になっています。

                  今は、原因ががわからないのでので、テンプレート内では、日本語は、使わないでいこうと思っています。どうしても使いたい場合は、画像にするとか。。。。。。。。でも、、キーワードやサイトの説明なども日本語でできないので、サーチエンジンで日本語でサーチされる場合は、私のサイトは、引っかかってくれないのかな~と新たな不安もありますが。。。。。文字化けしているよりもマシですよね undecided

                  付けたしです。

                  リソース管理内のチャンクの中(例えば、コンタクトフォーム用チャンク)の日本語もテンプレート内と同じように文字化けがおきています。







                  • こんちは。
                    基本的にド素人なので的確なアドバイスは出来ませんが、過去の経験を書いておきます。

                    DB を見てるのはphpMyAdminですかね?念のためですが Language が Japanese (utf-8) になってるか確認してね。

                    あと、php.iniのマルチバイト関係がどうかってとこじゃないかなぁと。
                    php.iniの変更が出来ないなら .htaccessに
                    AddDefaultCharset UTF-8
                    php_value mbstring.internal_encoding "UTF-8"
                    なんて書き足したら直ったりした経験がありますよん。
                    • zephyr さん、

                      お返事、ありがとうございます。

                      DBを見ているのは、phpMyAdminでLanguageは、Japanese (utf-8) になっています。

                      以前、WordPressを現在使っているサーバーに引越しした時に文字化けに悩まされて、php.iniのマルチバイト関係の部分を直してもらっています。現在は、以下の通りです。


                      mbstring
                      Multibyte Support: enabled
                      Multibyte string engine: libmbfl
                      Multibyte (japanese) regex support: enabled
                      Multibyte regex (oniguruma) version: 4.4.4
                      Multibyte regex (oniguruma) backtrack check: On

                      mbstring extension makes use of "streamable kanji code filter and converter", which is distributed under the GNU Lesser General Public License version 2.1.

                      Local Value/Master Value
                      mbstring.detect_order: no value/no value
                      mbstring.encoding_translation: Off/Off
                      mbstring.func_overload: 0/0
                      mbstring.http_input: pass/pass
                      mbstring.http_output: pass/pass
                      mbstring.internal_encoding: UTF-8/no value
                      mbstring.language: neutral/neutral
                      mbstring.script_encoding: no value/no value
                      mbstring.strict_detection: Off/Off
                      mbstring.substitute_character: no value/no value

                      MODxの他にPHP+MySQLで動いているプログラムは、WordPress、SMF、OpenPNEなどでいづれも問題なく日本語使えているのです。OpenPNEは、日本で開発されたようですから日本語で問題が起きることはないのでしょうね。

                      zephyr さんご提案の.htaccessに書き足す件もやってみたのですが、残念ながら状況は、変わりませんでした。mbstring.internal_encodingは、UTF-8に設定されているので他の設定かなと思います。php.ini設定は、サーバー側に頼めば変更してもらえるので、他の設定を変えるということもできるのですが、他のプログラムの日本語表示は、問題ないので、設定を変えるの、だいぶ臆病になっています。

                      問題があるとしたら。。。


                      mbstring.language: neutral/neutral
                      mbstring.script_encoding: no value/no value


                      の部分の感じがします。いづれもUTF-8じゃないとMODxでは、うまく日本語表示ができないということあるのでしょうか。