Smartyを利用したUTF-8化で大ハマリ1
2007年2月2日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のまま吐いてる感じ。
….解決するまで、続く。。。。