サポート » プラグイン » cformsで文字化け

  • imai

    (@imai)


    高機能なメールフォームプラグインのcformsIIで、文字化けがあります。
    http://www.deliciousdays.com/cforms-plugin
    送られてくるメールのタイトルが文字化けしてしまいます。
    いつもではなく入力された文字によって、化けることがあります。確率は3割程度です。
    あと本文でも、入力項目を自動的にすべて列挙する設定にすると、これも化けるようです。

    こちらの方は自力で修復したようですが、バージョンが古くて同じ手順は使えないようです。
    http://www.gnnk.net/20070525144758/
    これをみると、文字コードを変更しているようですが、最新版で修復できた方はおられませんか?

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • tsuchi

    (@tsuchi)

    メールはUTF8で送られます。
    たぶん、利用されているMUAがUTF8のメールは文字化けするのでしょう。
    自分はUTF8からiso-2022-jpになるように文字コードの変換とContent-Typeのcharsetをcharset=”iso-2022-jp”となるようにソースを改造しました。
    ※タイトル以外にも影響があったので、全体的にむりやりやりました。
    ただ、8.xはまださわってないので、近々にTryしてみる予定ですが。。
    grep等でContent-Typeを設定している箇所があるところを検索して、
    置き換えてみてください。
    もちろん、文字コード変換も考慮する必要がありますが。

    taikiken

    (@taikiken)

    時間が空いてしまいましたが、解決されていますか。

    cformsはWordpressの文字コードでメールを送信しているようです。
    Wordpress2.5ではUTF-8になります。

    メール本文の文字コードはUTF-8のまま変更していませんが、
    タイトル(subject)の文字化けだと以下のコードを変更することで解消できるようです。

    lib_aux.php
    function encode_header

    phpmailer/class.phpmailer.php
    function EncodeHeader

    それぞれ関数内を全てコメントにし
    return mb_encode_mimeheader($str,'ISO-2022-JP');
    を追加します。

    当方では文字化けは解消しています。
    ただ、この関数が何を行っているかがよくわかりません。
    コメントにすることで何か問題が起こるかもしれません。
    残念ながら私の力ではここまでです。

    imai

    (@imai)

    tsuchiさん、taikikenさん
    ご意見ありがとうございました。

    gmailとthunderbird(mac)で確認していますが、メーラーとしてはどちらもUTFの受信は可能なようです。
    しかし、特定の文字列がタイトルに入ると、部分的に文字化けするようです。

    とりあえず、私でも理解できたアドバイスとして、
    lib_aux.php
    function encode_header
    のみ、関数内を削除し
    return mb_encode_mimeheader($str,’ISO-2022-JP’);
    を入れてみたところ、文字化けしていた文字列でも、文字化けしなくなりました。

    メールヘッダーは、まだ
    Content-Type: text/plain; charset=”UTF-8″
    となっているので、根本的な解決ではないと思いますが、UTF-8が送受信可能なメーラーでは、受信できるということでしょうか。

    他にも、実際に改善されたプラグインを、再配布しているなどの情報があれば、是非お知らせください。

    taikiken

    (@taikiken)

    >メールヘッダーは、まだ
    >Content-Type: text/plain; charset=”UTF-8″

    先の返信でも書いた通り、
    PCで受信するならUTF-8でも良いだろうと思い変更しませんでしたが、
    もしも変更する必要がおありなら

    lib_ajax.php と lib_noajax.php
    の複数の
    get_option(‘blog_charset’)
    を変更したい文字コードへ変更し、
    多分入力内容が入っている変数$messageの文字コードを変換することで対応できるのではないかと思います。
    すみません、確かめていません。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「cformsで文字化け」には新たに返信することはできません。