読者です 読者をやめる 読者になる 読者になる

Template Toolkitで utf-8を使う

perl

あんまり日本語を出力したことがなくて調べてみた。

何も気にせず utf8の文字列を出力すると、お馴染みの以下の警告が出る

Wide character in print at /usr/local/lib/perl/5.10.0/Template.pm line 195

別に普通に出力されてるんだけど、何か気持ち悪いし、何か問題が起こるかもしれない.

対策方法としてはテンプレートファイル内に

[% RAWPERL %]use utf8;[% END %]

と書くとか、コンストラクタの時点で指定するっていうのが調べたら出てきたんだけど、
ネタが書かれた時期がやや古かったので、基本に帰ってperldocで調べてみたら普通に
載っていた。processメソッドの呼び出しのところで指定すればいいみたい。

  $template->process('sample.tmpl', $obj, 'output.html',
                     'binmode' => ':utf8')

これで警告は出力されなくなった

テンプレートファイル自体に utf-8の文字列を含む場合に文字化けが
起きてしまった。回避する方法はTemplateのコンストラクタでちゃんと
指定する必要があるみたい

my $template = Template->new('ENCODING' => 'utf-8');