2007年4月4日水曜日

popnupblog utf-8化

popnupblogはjapaneseだけをutf化しても駄目だった。
理由はメール。
includeのpop_func.phpを利用するとまず、メール投稿時に文字化けした。
これは360行あたりの本体の文字化けがある。
return mb_convert_encoding($str, $code,"auto");
が、autoだと変換ミスするという問題だ。
よくわからなかったのだが、メールの送受信をする際に日本語ではjisにする習慣があるようなのだが、そのjisコードのデータをそのままutf-8と判断して格納してしまい文字化けするようだ。
これは
return mb_convert_encoding($str, $code,"JIS,SJIS,EUC-JP,UTF-8");
とすることで解決した。(jisだけでもいいのかなぁ?)

もうひとつ。
通知メールだがこれもsubjectが文字化けする。
そこでとりあえずclass/sendmail.phpを
function enc_mimeheader(&$subj){ if ( function_exists('mb_encode_mimeheader') ){ // Add CR for mb_encode_mimeheader bug when PHP version 4.4.0 or 4.4.1.
// if ( preg_match('/^4¥.4¥.[01]([^0-9]+|$)/',PHP_VERSION)) $subj = "¥n".$subj;
// $subj = mb_encode_mimeheader( $subj, sendmail::get_mailcode(), "B" ); } return $subj; }
上記のように変更する。
だがこのままだと一部文字化け・・・。
ただ直しようがないんだなぁ・・・。

追記
php.iniを見直したらうまくいきました。
[mbstring]
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = auto
mbstring.http_output = pass
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.substitute_character = none;
mbstring.func_overload = 0
これが最終かなぁ?





0 件のコメント:

コメントを投稿

フォロワー

ブログ アーカイブ