検索プログラマのメモ帳

壁にぶつかったら検索で調べるプログラマのちょっと遅れたメモ帳。たまに自分で挑戦する。

Skip to: Content | Sidebar | Footer

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

18 2月, 2009 (10:56) | squirrelmail(リスメール) | By: admin

添付ファイルが文字化けする。
たぶん添付ファイルのファイル名の文字コードをなにと判断するかだと思う。
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で検索 一番下の方にあったような

Write a comment