- メールでの文字化けは起こっていない(間違い)。しかし、ヘッダにはcharasetの指定が無いのでメーラは正しくエンコードできない場合がある。
- WEBサインアップの際、登録した住所か漢字一文字目以降が表示されない。
重大な事が発覚--ZeRoさんのアドバイスに沿って英数Onlyで登録してみたところ
Tokyo hogehoge... ⇒ Tokyo までしか登録されていない。〒も
123-4567 ⇒ 123-4 までしか登録されておらず。
文字化けの問題じゃないのかぁ...(MySQLは文字セットUTF8、照合順序utf8_unicode_ci で正しくセット - ContactFormから問い合わせを送信するとエラー発生。
- ユーザーの登録項目を任意のものを追加したい(簡単に)
- eFormなるものは何か知りたい(前から気になってた)
- ユーザによる個人情報変更画面ってあるのか(まだ調べておらず)
さて、ここから本題
PHP初心者には非常に参考になる記事を発見!
PHPの内部の仕組みと文字化けの要因、mail()関数->mb_send_mail()関数の置き換えの方法
Yet Another 仕事のツール試してみたが変わらず。でも考えてみたらこの文字化けってmail関数って関係あるのかな?追ってみないとわからないんだけど、メールの文字化けじゃなくてMySQLへの登録時の文字化けなのではないだろうか。
第64回 phpCollabでプロジェクト管理(4) メール送信の文字化けを解消する
...mail()とは別に、文字エンコーディングの変換機能を持たせたものが、mbstring拡張に含まれる「mb_send_mail()」関数だ。つまり、mail()関数をmb_send_mail()関数に置き換えれば、メールの文字化けは解消される...スクリプト中でmail()関数を使用している箇所を洗い出して、全部 mb_send_mail()に書き換えるというのもかなり面倒である。そこで、php.ini設定ファイルの、mbstring.func_overloadパラメータを「1」に設定すれば、自動的に全てのmail()関数の代わりにmb_send_mail()関数が実行される。
; overload(replace) single byte functions by mbstring
; mail(), ereg(), etc are overloaded by mb_send_mail(), mb_ereg(),
; etc. Possible values are 0,1,2,4 or combination of them.
; For example, 7 for overload everything.
; 0: No overload
; 1: Overload mail() function
; 2: Overload str*() functions
; 4: Overload ereg*() functions
mbstring.func_overload = 1<続きあり>
2chの投稿を参考に同様のことをやってみたが、正しく表示されていた日本語の姓名まで文字化けする羽目に。
grep で調べたところ、MODxでは明示的に SET NAMES されてないようです。
そこで、ためしに manager/includes/header.inc.php の5行目に
$sql="SET NAMES utf8;";
mysql_query($sql);
0 件のコメント:
コメントを投稿