它似乎像模板工具包没有正确处理编码。模板工具包字符编码
我通过template->process
一个文件名(在哪里得到模板),一个散列引用(包含所有参数)和一个标量引用(在哪里放置输出),然后我返回并显示它到用户。
当我给它一个带有元音变音的字符串时,html输出包含一个黑色菱形,并带有白色问号代替每个字母(但是正确的字母数)。任何其他角色都很好。
我使用警告打印出来的字符串之前,我打电话给template->进程,在这一点上,它是好的,从我可以告诉它是在template->process
调用中,事情变成垃圾。
任何想法? 我尝试过使用ENCODING => "utf8"
以及binmode => ":utf8"
,但对输出没有任何影响。
这里是我的代码与一些脂肪修剪出来只是为了显示我的电话template->过程,请注意,如果我离开了{binmode => 'utf8'}
它没有任何效果。
<put variables in hash referenced to by vars>
<print out variables in has referenced to by $var>
my $data;
$template->process($self->filename, $vars, \$data, {binmode => ':utf8'}) || die "Template process failed: ", $template->error();
return $data;
解决 嘿感谢您的回答,这个问题竟然是那个后模板进程已经完成了它的东西,我们再写入字符串到一个临时文件输出,所以我们之前也设置binmode的文件所需的代码现在看起来像:
<put variables in hash referenced to by vars>
<print out variables in has referenced to by $var>
my $data;
binmode(STDOUT, ":utf8");
$template->process($self->filename, $vars, \$data, {binmode => ':utf8'}) || die "Template process failed: ", $template->error();
return $data;
我感谢大家的时间:)
可能不相关,通过尝试传递UTF-8而不是utf8。有时它很重要,例如http://jeremy.zawodny.com/blog/archives/010546.html – Hugmeir 2010-12-20 01:50:58
UTF-8文本是否受到损坏或者浏览器是否只是没有选择正确的编码? – 2010-12-20 02:08:55
如果是后者,我怎么能告诉浏览器使用什么编码?使用HTML模板专业版(我们正在移动的系统)中的字符显示正确。这让我相信这是TT,但我可能是错的。现在在火车上,所以我明天早上将不得不尝试任何建议。 – cjh 2010-12-20 02:18:24