[PHP-users 363] Re: PHP4.0.6で一部文字変換を passしたい
KOYAMA Tetsuji
php-users@php.gr.jp
Thu, 28 Jun 2001 19:14:54 +0900
小山です。
At Thu, 28 Jun 2001 17:00:29 +0900,
SATO Mitsuo wrote:
> この echo $ibmmoji の時だけ文字変換を止める方法はないでしょうか?
>
> 現状のスクリプトはPostgreSQLクライアントエンコードにSJISを指定
> しているので、文字化けするのはあたりまえですが、この指定を外しても
> mb_output_handler が想定していない文字コード(IBM拡張文字をPostgreSQL側
> でEUCの未使用コードに割り振ったもの)のため、文字化けしてしまいます。
このやり方では output buffering で最後にまとめて一気に変換してしまう
ので、特定部分だけ変換しないようにというのは難しいでしょうね。
> #php.ini でoutput_handler = mb_output_handlerを設定すると
> #<?php phpinfo(); ?>でPHPとZENDのロゴが見えなくなりますね。
これも理由は同様で PHP が出力する GIF イメージに対しても、
mb_output_handler による変換がかかってしまうので、結果壊れたデータになっ
てしまうということですね。
php.ini で output_handler を設定するのを止めて良いなら、以下のような
方法が考えられます。
output_buffering = Off
ouput_hander =
の状態で
<?php
ob_start('mb_output_handler');
[通常のコンテンツ]
ob_end_flush();
echo $ibmmoji;
ob_start('mb_output_handler');
[コンテンツ続き]
?>
要は特定部分だけ、output buffering を解除してあげればいいわけで。
おまけ:
マニュアルの Multi-Byte String Functions の章が XLIII なのは何故なん
でしょう? 綴りを見て M - U - L なので mSQL functions の後あたりに来る
のが正しいような気がするのですが。はっ、ひょっとして、M(ulti) - B(yte)
だから今の場所なのか。最初見つからなくてうろうろ探してしまいました。(^^;
--
小山 哲志@ビート・クラフト
koyama@beatcraft.com
koyama@hoge.org