2008年10月 6日

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

Takahiro Kambe さんは書きました:
> In message <48E979BF.4060103@xxxxx>
> on Mon, 06 Oct 2008 11:36:47 +0900,
> Hiroshi Hayashi <rin@xxxxx> wrote:
>> 具体的な事例も出さずに突然失礼しました。
> いえいえ。
>
>> ほとんどどのようなサブジェクトでも発生していました。

>> 例えば、「テスト」というサブジェクトですと、PHP5.2.5では
>>
>> =?ISO-2022-JP?B?GyRCJUYlOSVIGyhC?=
>>
>> とエンコードされるのですが、PHP5.2.6ではEUCのまま送信されてしまいます。
> PHPはportsからのインストールでしょうか?

はい、portsからインストールしました。

> NetBSD 4.0_STABLE上のApache 2.0.63, PHP 5.2.6で動作させている、
> squirrelmail-1.4.15 (with squirrelmail-1.4.15-ja-20080527)で再現しま
> せんでした。(以上すべてpkgsrcでインストール)
>
>> preg_match('/^([[:print:]]+)(.*)/',...)
>>
>> にマッチせず elseブロックが実行されるのに対し、PHP5.2.6ではマッチしてif
>> のブロックが実行され、mb_encode_mimeheaderで変換される文字列がなにもない
> ということは、以下のようなファイルを日本語EUCでtest.phpとかに保存して、
>
> % php test.php
>
> とかすると、1と表示されるのでしょうか。(なお、ほんもののPHPプログラマ
> ではないので、このテストが妥当かどうかの自信はありません。)
>
> ----------------------------------------------------------------
> <?php
>
> $s = "テスト";
> $n = preg_match('/^([[:print:]]+)(.*)/', $s);
> print $n . "\n";
>
> ?>
> ----------------------------------------------------------------

はい、1と表示されました。
しかし、同じマシン上でportsを使わずにソースからインストールしたPHP5.2.5
のコマンドライン版phpを使って同じプログラムを実行するとやはり 1と表示さ
れました。DocumentRoot以下においてWWWブラウザからこのプログラムのURLを指
定して実行すると PHP5.2.5でも5.2.6でも1と表示されました。ということはほ
かにも関係していることがありそうですね。マルチバイト関係の設定は preg_*
にはあまり関係ないはずと思いつつ、mb_language('Japanese') や
mb_language('en'), mb_internal_encoding('UTF-8') などをこのプログラムに
追加してみたりしたのですが変化はありませんでした(私はPHPも十分理解してい
るとはいえませんのでまったく的外れかもしれませんが)。
ちなみに同じFreeBSD 6.3-RELEASEの別のマシンで、PHP4.4をportsを使わずにマ
イナーバージョンごとにディレクトリを分けてインストールしていたものがある
のですが、それでこのプログラムを実行すると 4.4.0-4.4.4 は 0、4.4.6-4.4.9
は 1 となりました。

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


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




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