添付ファイルの文字化け(firefox・IE)

添付ファイルが文字化けする。
たぶん添付ファイルのファイル名の文字コードをなにと判断するかだと思う。
IEはSjisと判断し、firefoxは本文の文字コードで判断する。と思っているためエラーが出るんだと思う。

functions/i18n.phpでブラウザによって文字コードの設定とかがしてある

535行目あたりで
$useragent = func_get_arg(2);
削除 if (strstr($useragent, ‘Windows’) !== false ||
削除 strstr($useragent, ‘Mac_’) !== false) {
追加 if (strstr($useragent, ‘Windows’) !== false) {
追加 $ret = mb_convert_encoding($ret, ‘UTF-8’, ‘AUTO’);
追加 } else if (strstr($useragent, ‘Mac_’) !== false) {
$ret = mb_convert_encoding($ret, ‘SJIS’, ‘AUTO’);
} else {
$ret = mb_convert_encoding($ret, ‘EUC-JP’, ‘AUTO’);

Deliver.class.php
355行目あたりで
for ($i = 0 ; $i < $cnt ; $i++) { 削除 $hdr_s .= $this->foldLine($header[$i], 78,str_pad(”,4));

追加 if (strstr($header[$i], ‘name’) === false) {
追加 $hdr_s .= $this->foldLine($header[$i], 78,str_pad(”,4));
追加 } else {
追加 $hdr_s .= $header[$i];
追加 }
}

functions/mime.php

2400行目あたりで
if (!$force) {
header (“Content-Disposition: inline; filename=”$filename””);
削除 header (“Content-Type: $type0/$type1; name=”$filename””);
追加 if ($isIE) {
追加 header (“Content-Type: $type0/$type1;”);
追加 } else {
追加 header (“Content-Type: $type0/$type1; name=”$filename””);
追加 }
} else {

ここまでやって解決できず。
文字化けしたファイル名をみるとsjisに変換したときの文字化けだったので、添付ファイル名をsjisに変換してやれば文字化けはおこらないと考えた。

functions/i18n.phpにIEの場合だけfilenameをエンコーディングしてるところがあるので、全ての場合にsjisにエンコードするように変更したら成功しました。

$filenameで検索 一番下の方にあったような

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です