その他
サーバーを立てている最大の目的たるWEBメールなんだが
一番使い勝手のよいSquirrelMailを使っている
で、結局Ver1.5.2はもろもろの問題点を解決できず使い勝手が悪すぎたので
安定動作の1.4.15を使っている
そこで文字化け問題勃発…
いろいろ調べてどこにも載ってないがどうやら
mime.php
が文字コードの変換に滑ってることが判明
で、文字化けする文字コードをechoしてみた結果…
ひとつは
Windows-31J
もいっこは
UTF-8
ということが判明
で分かったのは、このWEBメールキャラセットの判別に滑ると無変換で画面に出しちゃうらしい
チェックロジックを確認したら、$charset関数での判断に上の2つは無かった
…utf-8はあったんだが、大文字でセットするメーラーもあるんだね…
Windows-31JはJavamailがよく返すキャラセット、うちの会社からのメールが全部コレだ…
めんどくさいので上の2つを条件に無理やりねじ込んで解決!!!
ちなみにこんな感じ
if(!$charset_converted)以下の条件に押し込んだ…
>>
function translateText(&$body, $wrap_at, $charset) {
global $where, $what; /* from searching */
global $color; /* color theme */
global $languages, $squirrelmail_language, $charset_converted;
require_once(SM_PATH . 'functions/url_parser.php');
if ( $squirrelmail_language == 'ja_JP' && $charset == 'US-ASCII' ){
$charset = $default_charset;
}
if (!$charset_converted) {
if ($charset == 'iso-2022-jp' || $charset == 'shift_jis' || $charset == 'euc-jp' || $charset == 'Windows-31J' ||
$charset == 'UTF-8' ||
($squirrelmail_language == 'ja_JP' &&
($charset == 'utf-8' || $charset == '' || $charset == 'us-ascii'))) {
$body = $languages['ja_JP']['XTRA_CODE']('decode', $body);
$charset_converted = true;
}
}
<<
ちゃんと読めればいいや