Smartyを利用したUTF-8化で大ハマリ1

2007年2月2日 オフ 投稿者: KYO
Table of Contents

以前解決したはずの、SmartyのUTF-8(SJIS)出力。
自分で管理してる開発サーバーではOKなのに、今回アップするサーバーではNG。
以後、この手のサーバーもありそうなので、随時テストした項目をメモ。

PHP関数 mb_http_output() の利用

PHPをEUC-JPで作成しているので、PHP側に以下を追加してみる。

mb_http_output('utf-8');

ちなみに、PHPもSmartyのテンプレートもEUC-JPで作成。
Smarty.phpを継承したクラスを利用して、そちらに指定することでサイ全体をUTF-8化するって感じ。
結果としては、開発機ではOKなのに、本番機ではNG。

htaccessで色々設定してみる

管理者権限がないサーバーなので、頼りになるのは phpinfo() が吐く結果だけ。
mb_string の localvalue に文字コード関連の指定がないので、以下を追加してみた。

php_value mbstring.detect_order "auto"
php_value mbstring.language "Japanese"
php_value mbstring.internal_encoding "EUC-JP"
php_value mbstring.http_input "auto"
php_value mbstring.http_output "EUC-JP"
php_value mbstring.output_handler "mb_output_handler"
php_flag  mbstring.encoding_translation Off

mb_http_output() を利用するには、mbstring.output_handler の指定が必要らしいので。
ついでに、開発機の phpinfo() が吐く mbstring 周りの設定をして、 mb_output_handler(‘utf-8’) を試してみる。
またしても・・・NG。
どうやら、テンプレートをEUC-JPのまま吐いてる感じ。
….解決するまで、続く。。。。