QuickForm と 文字コード

この間から続いて、HTML_QuickForm。
HTML_QuickForm_Controller はちょっと重い(っていうかそこまでのものはあまり作ってない。趣味だし)ので、HTML_QuickForm+Smarty を使ってみる。

で、文字コードの部分が少し厄介。
以下のようなディレクティブにしておき、

mbstring.detect_order no value
mbstring.encoding_translation Off
mbstring.func_overload 0
mbstring.http_input pass
mbstring.http_output pass
mbstring.internal_encoding EUCJP
mbstring.language Japanese
mbstring.substitute_character no value
入出力文字コード=SJIS、テンプレHTMLをSJISにしようとした場合、内部的にはEUCJPなので、プログラム的な変換が必要になるのだが、これがなかなかうまくいかない感じ・・・。

HTML_QuickForm 内で $POST(或いは$GET)から値を引っ張ってきているのだが、applyFilterとかも使ってみたのだが、なかなかうまく動かなかった・・・。
Smarty単体だと、
function get_smarty_prefilter($source,&$smarty){
return mb_convert_encoding( $source, mb_internal_encoding(), 'SJIS');
}

function
get_smarty_outputfilter($source,&$smaty){
return mb_convert_encoding( $source, 'SJIS', mb_internal_encoding());
}
・・・
$smarty = new Smarty();
$smarty>register_prefilter('get_smarty_prefilter');
$smarty>register_outputfilter('
get_smarty_outputfilter');
みたいな感じでうまくいくのだが・・・。

結局、処理の始めに、
mb_convert_variables('EUCJP', "ASCII,JIS,UTF8,EUCJP,SJIS", $POST );
を入れることで対応。
ってこれでいいのか?
$
POSTを書き換えるのはものすごく抵抗がある。

ってさ、素直に出力ページとかもEUCJPに統一してもいいのかな。
確認してみたのだが、mantisの日本語ページとかもEUCJPで出力されているっぽいし。

でも出力をSJISで抑えておかないと、携帯コンテンツとかで泣くハメになるんだよね。
それからデザイナーからHTMLページをもらう場合、SJISってことがしばしある(事前に通知してればいいだけだけど)んで、SJIS出力にこだわっていたのだけども。