我有一个词comЯade,但是我不能用HTML打印它,因为俄罗斯的Я.我试过:
$HTML::Entities::char2entity{'Я'} = 'Я';
$HTML::Entities::char2entity{'1071'} = 'Я';
$HTML::Entities::char2entity{'ï'} = 'Я';
$str = HTML::Entities::encode_entities( $str, q{Яï1071} ); 在那之后我试着:
$str =~ s/1071/Я/g;
$str =~ s/Я/Я/g;
$str =~ s/ï/Я/g; 但在这两种情况下,我都会得到这样的错误:
/usr/local/share/perl/5.10.1/Starman/Server.pm第470.行系统中的宽字符
为什么?
一些代码:
title.mi
<%init>
binmode STDOUT, ':encoding(UTF-8)';
($str =~ s/&/%26/g;); #this is working
$str =~ s/1071/Я/g;
$str =~ s/Я/Я/g;
$str =~ s/ï/Я/g;
</%init>
<div class="bd-headline left">
<h1 style="margin-top:0; padding-top:0;"> <% $str %> </h1>
</div>base.mc
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>发布于 2012-10-18 18:10:42
一些代码:
title.mi
<%init>
use Encode;
my $hl = encode_utf8($str);
my $find = "Я";
my $replace = "Я";
$hl =~ s/$find/$replace/g;
my $hs = HTML::Strip->new();
my $no_html_hl = $hs->parse($hl);
</%init>
<div class="bd-headline left">
<h1 style="margin-top:0; padding-top:0;"> <% $no_html_hl %> </h1>
</div>base.mc
<head> </head> 此链接是有帮助的。
发布于 2012-10-11 16:58:36
问题1:
如果您的源代码是使用UTF-8编码的,那么您没有使用use utf8;告诉Perl太多。
如果你的源代码不是用UTF-8编码的,它不可能有一个"Я“。
问题2:
文件句柄只能传输字节,但不能将Unicode字符编码为字节。这是通过使用像UTF-8这样的字符编码来完成的。您的文档指定使用什么编码?使用它对输出进行编码如下:
binmode STDOUT, ':encoding(UTF-8)';发布于 2012-10-11 17:53:59
用html实体替换字符转义几乎从来都不是正确的事情。
底层服务器(催化剂?)不知道unicode。搜索CPAN,查找催化剂::Plugin::Unicode::CPAN,这可能会有所帮助。
https://stackoverflow.com/questions/12844458
复制相似问题