只需要以特定编码显示一个页面

时间:2013-09-13 08:01:42

标签: perl encoding utf-8 mojolicious

我有一个使用utf-8编码的mojolicous app。 我在utf-8中的所有文件(模板,代码,任何东西)。

但是对于第三方服务,我需要以win-1251编码显示我的一个页面。

我在启动时添加新格式:

$self->types->type(wbm => 'text/html; charset=win-1251'); 

我添加了template / show / mypage.wbm.ep

<%= $txt %>

在我的控制器中,我设置了格式:

$self->render( 'show/mypage', format => 'wbm', txt => 'Превед, win1251');

当我访问127.0.0.1:3000/show/mypage时,我看到正确的类型text / html;字符集=双赢-1251 和错误的字符,如

  

УУАУЅУЂУЅУЄ,win1251

我尝试在模板中进行编码,如:

<%=  Encode::encode('windows-1251',$txt) %>

并尝试在控制器中执行相同操作,但页面仍显示不正确。

请帮帮我。

UPD:

以下是包含完整代码的测试项目https://github.com/korjavin/MojoWinPage

1 个答案:

答案 0 :(得分:0)

解决
  1. 渲染部分
  2. 编码
  3. 作为原始数据发送
  4. my $page = $self->render( 'show/mypage', format => 'wbm', txt => $txt, partial> => 1);
    my $win=Mojo::Util::encode ('cp-1251',$page);
    $self->render(data=>$win);
    

    感谢Sebastian Riedel(https://groups.google.com/forum/#!topic/mojolicious/bX_LLQIsop8