cfFormMailerで文字化けします  【解決済み】

質問全般・改善要望
返信する
yamada-pon
メンバー
メンバー
記事: 22
登録日時: 2012年9月06日(木) 15:54

cfFormMailerで文字化けします  【解決済み】

投稿記事 by yamada-pon »

お世話になります。

cfFormMailer1.3betaをダウンロードし、CPIのレンタルサーバーにセットアップしたところ、
確認画面、及び送信されたメールの入力内容に文字化けが発生しました。(添付ファイル参照)

文字化け部分の文字コードはEUC-JPになっています。
サイト自身もcfFormMailerの設定についてもUTF-8で運用しているつもりです。

設置レンタルサーバーであるCPI自身が少し癖のある部分もあるので、
PHPのconfig内容も見直してみましたが、自分にはわかりませんでした。

解決策がありましたらご教授ください。

-----
ご利用のサーバ:CPI シェアードプラン
MODXのバージョン:1.0.7J-r1-b2
PHPのバージョン:5.3.6
MySQLのバージョン:5.5.14
ブラウザ:
-----
添付ファイル
test.jpg
test.jpg (17.39 KiB) 閲覧された回数 14821 回
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: cfFormMailerで文字化けします

投稿記事 by yama »

/index.phpの最終行付近に「if (!MODX_API_MODE) { 」という行があると思いますが、

コード: 全て選択

mb_internal_encoding($modx->config['modx_charset']);
上記の記述をその行の直前くらいに挿入してみると改善されるでしょうか?(もう少し前のタイミングでもいいですが)
yamada-pon
メンバー
メンバー
記事: 22
登録日時: 2012年9月06日(木) 15:54

Re: cfFormMailerで文字化けします

投稿記事 by yamada-pon »

ご返信ありがとうございます。
カレントのindex.phpのご指定の箇所にコードを挿入したところ、下記のエラーが発生しました。

ご確認くださいますようお願いいたします。
Warning: mb_internal_encoding() [function.mb-internal-encoding]: Unknown encoding "" in /usr/home/***********/html/index.php on line 142

Warning: Cannot modify header information - headers already sent by (output started at /usr/home/***********/html/index.php:142) in /usr/home/***********/html/manager/includes/document.parser.class.inc.php on line 3815
Undefined index: a
« MODX Parse Error »
MODX encountered the following error while attempting to parse the requested resource:
« PHP Parse Error »
PHP error debug
Error : Cannot modify header information - headers already sent by (output started at /usr/home/***********/html/index.php:142)
ErrorType[num] : WARNING[2]
File : /usr/home/***********/html/manager/includes/document.parser.class.inc.php
Line : 477
Source : header("Content-Type: {$type}; charset={$this->config['modx_charset']}");
Basic info
REQUEST_URI : /
Resource : [1]***********
Referer :
User Agent : Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/20100101 Firefox/17.0
IP : 180.***.***.***
Parser timing
MySQL : 0.0040 s (3 Requests)
PHP : 0.0166 s
Total : 0.0206 s

Backtrace
1 executeParser() index.php on line 144
2 prepareResponse() manager/includes/document.parser.class.inc.php on line 287
3 outputContent() manager/includes/document.parser.class.inc.php on line 406
4 header() manager/includes/document.parser.class.inc.php on line 477
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: cfFormMailerで文字化けします

投稿記事 by yama »

コード: 全て選択

mb_internal_encoding($modx->config['modx_charset']);
上記の行をcfFormMailerスニペットの先頭あたり(<?phpの後)に記述するとどうなりますか?
yamada-pon
メンバー
メンバー
記事: 22
登録日時: 2012年9月06日(木) 15:54

Re: cfFormMailerで文字化けします

投稿記事 by yamada-pon »

ご返信ありがとうございます。

ご指定の箇所にコードを挿入しましたが、挙動はかわりませんでした。
yama さんが書きました:

コード: 全て選択

mb_internal_encoding($modx->config['modx_charset']);
上記の行をcfFormMailerスニペットの先頭あたり(<?phpの後)に記述するとどうなりますか?
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: cfFormMailerで文字化けします

投稿記事 by yama »

mbstring
mbstring.detect_order
mbstring.encoding_translation 0
mbstring.func_overload 0
mbstring.http_input pass
mbstring.http_output pass
mbstring.internal_encoding
mbstring.language neutral
mbstring.strict_detection 0
mbstring.substitute_character
MySQLの文字コード情報
接続メソッド SET CHARACTER SET
文字セット照合順序 utf8_general_ci
character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results utf8
character_set_server latin1
character_set_system utf8
character_sets_dir
管理画面のレポート→システム情報→詳細情報に上記のような情報があると思います。ここのところはどうなってますか?
yamada-pon
メンバー
メンバー
記事: 22
登録日時: 2012年9月06日(木) 15:54

Re: cfFormMailerで文字化けします

投稿記事 by yamada-pon »

お世話になります。

ご指摘いただいた確認項目で、
mbstring.internal_encodingの設定がEUC-JPとなっておりました。

設置先のレンタルサーバーであるCPIの初期設定がEUC-JPであったようで、
本当に初歩的な事で新年からご迷惑をおかけしました。

CPIのphp.iniの設定を任意に変更可能なので、そちらの項目をUTF-8に変更することで
状況は改善され、問題なくメールフォームから正常に送信することができました。

本当にありがとうございました。
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: cfFormMailerで文字化けします

投稿記事 by yama »

php.iniの設定をmb_internal_encoding関数で上書きできると思ったのですが、今回はできなかったみたいですね。今後の開発の参考にさせていただきます
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: cfFormMailerで文字化けします

投稿記事 by yama »

コード: 全て選択

ini_set('mbstring.detect_order', 'UTF-8');
ini_set('mbstring.http_input'  , 'pass');
ini_set('mbstring.http_output' , 'pass');
ini_set('mbstring.internal_encoding', 'UTF-8');
ini_set('mbstring.language', 'neutral');
もう解決されたようですが、新規にプラグインを作成して上記のように記述しOnManagerPageInitにフックしても解決できると思います。
同等の処理を今後システム本体にも組み込むよう考えてみます
返信する