[PHP-users 21862]Re: Content-Lengthヘッダの出力方法
Atsushi NAGAI
nagai @ asahi-pj.co.jp
2004年 5月 27日 (木) 17:37:10 JST
永井です。
From: komura <komura @ ma9.seikyou.ne.jp>
Date: Thu, 27 May 2004 16:31:31 +0900
Subject: [PHP-users 21861] Re: Content-Lengthヘッダの出力方法
| komura です。
| ob_start() のマニュアルの例を見て、以下のようなスクリプトを作成して
| 試してみました。
|
| http://jp.php.net/manual/ja/function.ob-start.php
|
| 特に問題なく動いているように見えましたが、どうでしょうか。
やあ、わざわざ試していただいて、ありがとうございます。
こちらでもうまく動作しました。
実際のコンテンツサイズと Content-Lengthヘッダの値が一致しました。
| function callback( $contents )
| {
| $contents = mb_convert_encoding( $contents, 'SJIS-win' );
| header( 'Content-Type: text/html; charset=Shift_JIS' );
| header( 'Content-Length: ' . strlen( $contents ) );
|
| return $contents;
| }
| ob_start( 'callback' );
なんか、mb_output_handler() が内部エンコーディングを HTTP出力
エンコーディングに変換するコールバック関数だというのを読んで、
カスタムハンドラでは、まず mb_output_handler() を呼び出して、
・・・と凝り固まってました。
mb_convert_encoding() で変換すればいいんですよね。
| php.ini の以下の指定はコメントアウトした状態で確認しました。
|
| output_handler = mb_output_handler
| mbstring.http_input = SJIS
| mbstring.http_output = SJIS
output_handler ははずさないとダメなようですね。
mb_output_handler を指定したままだと表示は化け化けになります。
ob_start() でエントリした callback で置き換わるわけではなく、
mb_output_handler も動いてしまうのかな。
ともかく、正常動作する 1つの解を得られました。
ありがとうございます。
# 私は今回初めてなのですが、携帯向けシステムを作っている人たちは、
# 普通にこの手のことをやってるのでしょうかね?
--
Atsushi NAGAI <nagai @ asahi-pj.co.jp>
PHP-users メーリングリストの案内