[PHP-dev 1162] Re: mb_encode_mimeheader() が正常に動作しない件について

komura komura @ ma9.seikyou.ne.jp
2005年 7月 16日 (土) 17:34:27 JST


komura です。
少し訂正します。

On Sat, 16 Jul 2005 14:28:34 +0900
komura <komura @ ma9.seikyou.ne.jp> wrote:

> おそらく、前の Patch で文字列に '?' '=' '_' が最初に含まれている場合は
> MIME エンコード処理を行うように変更したと思うのですが、以下の行で変数 c が
> 日本語文字列場合、256 以上の値が返ってくるため、ASCII 文字列と認識してしまう
> ことがあるようです。
> 
> 	if (!qp_table[(c & 0xff)]) { /* ordinary characters */
> 
> c が 256 より小さい場合のみという条件を加えてテストした限りでは特に動作には
> 問題なさそうです。
> 
> 	if (c < 256 && !qp_table[(c & 0xff)]) { /* ordinary characters */

見直してみると、c が負の値になる場合は同じ問題が発生するような気がします。
以下のように修正した方が良さそうです。

    if (c >= 0x00 && c < 0x100 && !qp_table[(c & 0xff)]) { /* ordinary characters */


> 別の話ですが、mbfilter.c には最初に charset=UTF-8 と書かれていますが、
> コメントは EUC-JP で書かれていますので、エディタによっては化けます。
> 可能であれば、どちらかに統一して欲しいところです。

すみません。これはこちらが使用していた Vim の文字コード判定の問題だった
ようです。よく調べてみると mbfilter.c の文字コードは UTF-8 になっていました。

-- 
komura <komura @ ma9.seikyou.ne.jp>


PHP-dev メーリングリストの案内