[PHP-dev 747]Re: zend-multibyteの挙動について

Masaki Fujimoto fujimoto @ tunebiz.net
2003年 5月 4日 (日) 23:33:26 JST


ふじもと@sparcな環境貸してくださるかた募集中、です。

えーと、何でそうしたかはイマイチ思い出せなかったりしますが、一応意図的に
そのような動作になっています(http_input/http_outputの変換に動作をそろ
えてみた、というだけかも)。

確かにscript_encoding -> internal_encodingの変換を抑止するだけなら
script_encodingをpassとか(?)にすればよいだけで、encoding_translationの値
は見る必要は無いといえばないですが、これってhttp_input/http_outputにも同
様のことが言えそうな気もしますよね...

そういう意味ではencoding_translationディレクティブ自体に実はあんまり意味
が無いといえば無いような気がしてきます。

まぁどちらにしても単なる「設定」の問題になってくると思うので、php.iniを
書くときに直観的に分かりやすいことが重要かと。とりあえず

- script_encoding -> internal_encoding変換だけはencoding_translationの値
  を見ないようにする
- encoding_translation廃止(ラディカルすぎかも)
- このまま

という選択肢でしょうか?

# 仮にencoding_translationを廃止したすると不整合って出てきますっけ?
# 何か見落としてた/ずれてたらフォローお願いします。PHPシロウトなので:)

Moriyoshi Koizumiさんの<20030504222305ue&SbB @ at.wakwak.com>から
>小泉です。
>
>今日いつもどおりバグバスティングしていたところ、
>
>php_mb_set_zend_encoding() 内に、次のような気になる記述を発見しました。
>
>下記が問題の部分です。
>
><quote>
>    if (MBSTRG(encoding_translation)) {
>        /* notify internal encoding to Zend Engine */
>        name = (char*)mbfl_no_encoding2name(MBSTRG(current_internal_encoding));
>        zend_multibyte_set_internal_encoding(name, strlen(name) TSRMLS_CC);
>
>        encoding_converter = php_mb_encoding_converter;
>    }
></quote>
>
>これを字面どおり受け取ると、
>mbstring.internal_encoding と mbstring.script_encoding が異なる場合、
>mbstring.encoding_conversion=1 でない限り、スクリプト内で
>変換が行われないことになりますが、これは期待されている動作なのでしょうか?
>
>常に有効になっていたとしても別に問題は起こらないはずですが。。。
>
>_______________________________________________
>PHP-dev mailing list
>PHP-dev @ php.gr.jp
>http://ns1.php.gr.jp/mailman/listinfo/php-dev

-- 
Masaki Fujimoto
fujimoto @ tunebiz.net



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