Show
Ignore:
Timestamp:
07/28/08 02:46:58 (6 years ago)
Author:
tomi-ru
Message:

ENCODINGの件

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • websites/perl-users.jp/ttroot/modern_introduction_perl/template-tt.html

    r16671 r16718  
    1818    use utf8; 
    1919    use Template; 
    20     use Template::Provider::Encoding; 
    21  
    22     binmode STDOUT, ':utf8'; # オマジナイ 
    23  
     20     
    2421    my $tt = Template->new( 
    25         LOAD_TEMPLATES => [ Template::Provider::Encoding->new ],                      # テンプレートファイルを utf8 flag つきでロードする 
     22        ENCODING => 'utf-8',  # utf-8で保存されたテンプレートファイルを utf8 flag つきでロードする 
    2623    ); 
    2724    $tt->process('hoge.tt', { author => "アンディ" }, \my $out) or die $tt->error; 
     25     
     26    binmode STDOUT, ':utf8'; # utf-8で出力するというオマジナイ 
    2827    print $out; 
     28 
     29    # または 
     30    # use Encode; 
     31    # print Encode::encode('utf-8', $out); 
    2932 
    3033    # hoge.tt 
     
    3336ね。かんたんでしょ。 
    3437 
    35 ### テンプレートファイルを utf8 以外で記述したいのですが。。。 
     38#### テンプレートファイルを utf-8 以外で記述したいのですが。。。 
     39 
     40    my $tt = Template->new( 
     41        ENCODING => 'euc-jp', # とか 
     42    ); 
     43 
     44### Template::Provider::Encoding を使う方法 
     45 
     46    # hoge.pl 
     47    use strict; 
     48    use warnings; 
     49    use utf8; 
     50    use Template; 
     51    use Template::Provider::Encoding; 
     52 
     53    my $tt = Template->new( 
     54        LOAD_TEMPLATES => [ Template::Provider::Encoding->new ], 
     55    ); 
     56    $tt->process('hoge.tt', { author => "アンディ" }, \my $out) or die $tt->error; 
     57     
     58    binmode STDOUT, ':utf8'; # オマジナイ 
     59    print $out; 
     60 
     61    # hoge.tt 
     62    わたしのなまえは [% author %] です。 
     63 
     64#### テンプレートファイルを utf8 以外で記述したいのですが。。。 
    3665 
    3766    [% USE encoding 'cp932' %] 
    3867 
    39 のように書くとよい。 
     68のように書くとよい。Template::Provider::Encoding を使うとこのようにテンプレートごとにエンコーディングを変えられます。 
    4069 
    4170### 備考