2008年10月 6日

[SM-USERS-JA:1821] Re:Subjectの文字化け

具体的な事例も出さずに突然失礼しました。

ほとんどどのようなサブジェクトでも発生していました。
例えば、「テスト」というサブジェクトですと、PHP5.2.5では

=?ISO-2022-JP?B?GyRCJUYlOSVIGyhC?=

とエンコードされるのですが、PHP5.2.6ではEUCのまま送信されてしまいます。

それで追いかけていましたら i18n.php の

if (preg_match('/^([[:print:]]+)(.*)/', $ret, $regs)) {
$ret = $regs[1] .
str_replace(' ', '',
mb_encode_mimeheader($regs[2], 'iso-2022-jp', 'B', ''));
}else{
$ret = str_replace(' ', '',
mb_encode_mimeheader($ret, 'iso-2022-jp', 'B', ''));
}

の部分で、日本語で始まるサブジェクトは、PHP5.2.5の場合

preg_match('/^([[:print:]]+)(.*)/',...)

にマッチせず elseブロックが実行されるのに対し、PHP5.2.6ではマッチしてif
のブロックが実行され、mb_encode_mimeheaderで変換される文字列がなにもない
という状態でした。それでpreg_matchのマルチバイトでの [:print:] の挙動が
変わったのではないかと思い、この部分を [:alnum:]|[:blank:]|[:punct:] と
してみたらここで意図されている、文字列先頭のASCII文字を
mb_encode_mimeheaderで変換せずに通すことができるのではないかと思いまし
た。場当たり的な対処法ですが…。

> こんにちは。
>
> In message <48E1E1EA.5020206@xxxxx>
> on Tue, 30 Sep 2008 17:23:06 +0900,
> Hiroshi Hayashi <rin@xxxxx> wrote:
>> squirrelmail-1.4.15-ja-20080527 を FreeBSD6.3-RELEASE + Apache2.2.9 で利
>> 用していますが、PHPを5.2.5から5.2.6にバージョンアップしたところ、Subject
>> が文字化けするようになりました(より正確には、きちんとMIMEエンコードされ
>> なくなりました)。それで調査し、functions/i18n.php を以下のように変更した
>> ところ症状は改善されました。
> これは、どのようなSubjectでも発生するのでしょうか。
>
> 適当な発生するSubjectの例を出していただけると幸いです。

--
林 周志(はやし ひろし)
東京大学生産技術研究所 電子計算機室
_______________________________________________
squirrelmail-users mailing list
squirrelmail-users@xxxxx
http://sanguine.jp/mailman/listinfo/squirrelmail-users


投稿者 xml-rpc : 2008年10月 6日 11:36
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/77854
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。