サポート » プラグイン » Contact Form 7の設定に日本語を入れると設定変更できない

  • 解決済 hiro_sz

    (@hiro_sz)


    Contact Form 7の設定画面のうち、
    「メール」「メール(2)」「メッセージ」の各項目に
    日本語を入れると変更できない現象が発生しています。

    上記項目に半角英数記号を入れた場合は変更できるのですが、
    日本語を入れると、上記項目の全ての設定が消え、
    「a」に置き換わってしまいます。
    ちなみに、フォームの内容を作り込む「フォーム」だけは、変更できました。

    WordPress 3.1.4
    PHP 5.1.6
    MySQL 5
    Contact Form 7 3.0.1

    複数のブラウザで確認したり、
    ブラウザのキャッシュをクリアしても同じ現象が出ました。

    問題がどこにあるかだけでもわかると前に進めるのですが…
    お知恵をお貸しください。
    よろしくお願いいたします。

9件の返信を表示中 - 1 - 9件目 (全9件中)
  • トピック投稿者 hiro_sz

    (@hiro_sz)

    追記です。

    Contact Form 7 3.0.1はWordPress3.2以降でしたので、
    Contact Form 7 2.4.6に入れ直しました。

    入れ直しても、同じ現象が発生しています。
    よろしくお願いいたします。

    モデレーター Takayuki Miyoshi

    (@takayukister)

    一度すべてのプラグインを無効にしてテーマをデフォルトのテーマ(Twenty Ten?)に戻して試してみてください。

    トピック投稿者 hiro_sz

    (@hiro_sz)

    さっそくのご回答ありがとうございます。
    マルチサイトなので、ネットワーク全てのプラグインと
    各サイトのプラグインを停止し、TwentyTenに戻して試してみましたが、
    現象が再現しました。

    モデレーター Takayuki Miyoshi

    (@takayukister)

    「メール」「メール(2)」「メッセージ」では問題が発生、「フォーム」では発生しないとすると、値が配列で保存される(シリアライズされる)か文字列として保存されるかの違いが関係しているように思います。「a」に置き換わってしまう、この「a」はシリアライズされた配列の1文字目から来ているものかもしれません(2文字目以降がどこへ消えたかはわかりませんが)。

    実際にはデータベースに何が保存されているのでしょうか。それを確認すれば保存時の問題なのか出力時の問題なのか切り分けまではできそうです。

    サーバーは何をお使いでしょうか。どこかのホスティングサービスですか?

    トピック投稿者 hiro_sz

    (@hiro_sz)

    再度のご回答ありがとうございます。助かります。

    サーバー管理をお願いしている会社に、phpmyadminの情報を知らせてもらうようお願いをしましたので、明日には確認出来るかと思います。
    わかりましたらまたご報告させていただきますので、よろしくお願いいたします。

    ちなみに、サーバーは大手レンタルの類ではありません。
    MySQLの文字コードがEUCですので、php_valueで各種設定をしています。

    php_value mbstring.language              Japanese
    php_value mbstring.internal_encoding     UTF-8
    php_value mbstring.http_input            pass
    php_value mbstring.http_output           pass
    php_flag mbstring.encoding_translation  Off
    php_value default_charset                UTF-8

    contact form 7以外は(多分)正常に使えています。

    トピック投稿者 hiro_sz

    (@hiro_sz)

    昨日はありがとうございました。
    DBの中身がわかりましたので、ご報告いたします。

    「wp_contact_form_7」テーブルの「mail」セルの中身です。

    a:7:{s:7:"subject";s:54:"メッセージが届きました";s:6:"sender";s:18:"ポスト";s:4:"body";s:41:"[your-name]
    [your-email]
    [your-message]";s:9:"recipient";s:16:"hogehoge@hoge.jp";s:18:"additional_headers";s:0:"";s:11:"attachments";s:0:"";s:8:"use_html";s:0:"";}

    設定画面の表示は「a」なのですが、DBには最後に更新した内容(日本語)が記載されていました。
    先ほどテストで新しいフォームを作りDBを見ながらテストを行った結果です。

    設定画面で新しいフォームを作成
    保存するとDBに新規フォームの情報(日本語込み)が書き込まれる
     ↓
    日本語が含まれていた場合、設定画面の表示が「a」になる
    表示は「a」でもDBには日本語が登録されている
     ↓
    設定画面で「a」の表示のまま上書きしてしまうと、DBのデータが「a」になる

    よろしくお願いいたします。

    モデレーター Takayuki Miyoshi

    (@takayukister)

    文字コード設定に関係した問題があるようですね。Contact Form 7 に限らず他でも見えていない問題が生じていると思います。

    WordPress の文字コードは何に設定されているんでしょうか。

    a:7:{s:7:”subject”;s:54:”メッセージが届きました”;s:6:”sender”;s:18:”ポスト”;s:4:”body”;s:41:”[your-name]
    [your-email]
    [your-message]”;s:9:”recipient”;s:16:”hogehoge@hoge.jp”;s:18:”additional_headers”;s:0:””;s:11:”attachments”;s:0:””;s:8:”use_html”;s:0:””;}

    「ポスト」で18バイトというのは、UTF-8 で扱われているのではなさそうですが。

    # 今使っているサーバーを使わなければならない特別な理由がなければ、ほかに移った方が楽でしょう。

    トピック投稿者 hiro_sz

    (@hiro_sz)

    確認いただきましてありがとうございました。
    WordPressの文字コードはUTF-8です。

    「ポスト」で18バイトというのは、UTF-8 で扱われているのではなさそうですが。

    s:18というのは文字列の長さだったのですね。
    元々は「○○○ポスト」と個人名の漢字3文字が入っていたので、
    投稿する際に削除してしまいました。
    メッセージ、メールアドレスも同様に変更してしまっています。
    大変失礼いたしました。

    例えば、上記のバイト数があっていても、文字コードが原因でしょうか?

    トピック投稿者 hiro_sz

    (@hiro_sz)

    上記の件解決いたしましたので、ご報告です。

    ご指摘の通り、メールフォームプラグイン以外に、
    ウィジェットの各タイトルを変換できない等の不具合がありました。

    php.iniの「func_overload」設定を7から0にすることで、
    諸々の問題が解消いたしました。

    助言をいただきまして、ありがとうございました。

9件の返信を表示中 - 1 - 9件目 (全9件中)
  • トピック「Contact Form 7の設定に日本語を入れると設定変更できない」には新たに返信することはできません。