Smartyのエンコード設定

Smartyの文字化けについてメモ。

EUCSJIS環境でSmartyを使う場合、エンコードの設定をしないと文字化けする事があります。


Smarty.class.phpをインクルードする前に下記のコードを記述。

define('SMARTY_RESOURCE_CHAR_SET','EUC-JP');

Chapter 11. Charset Encoding

    /**
    * Initialize new Smarty object
    *
    */
    public function __construct()
    {
        // selfpointer needed by some other class methods
        $this->smarty = $this;
        if (is_callable('mb_internal_encoding')) {
            mb_internal_encoding(SMARTY_RESOURCE_CHAR_SET);
        }

実際にテンプレート機能を使っていなくても、Smartyのコンストラクタで強制的にencodingの設定をしてくれちゃってます。
状況から切り分けがしずらいのでちょっとハマりました。