我需要使用perl查找并替换字符串中的所有严重字符。我尝试使用以下代码
执行此操作$str=~ s/è/è /g;
但未找到è
。我需要转换严重的字符,因为我必须插入XML文件
有人可以帮我这个吗?
据我所知这是代码
sub ConvertiCaratteri()
{
my ($variabile)=shift;
#< <
#> >
#& &
#' '
#" "
$form{$variabile}=~ s/&/& /g;
$form{$variabile}=~ s/</< /g;
$form{$variabile}=~ s/>/> /g;
$form{$variabile}=~ s/'/' /g;
$form{$variabile}=~ s/"/" /g;
$form{$variabile}=~ s/à/à /g;
$form{$variabile}=~ s/è/è /g;
$form{$variabile}=~ s/é/&é /g;
$form{$variabile}=~ s/ì/&ì /g;
$form{$variabile}=~ s/ò/&ò /g;
$form{$variabile}=~ s/ù/&ù /g;
}
对于char和&amp; &LT; ecc它有效,但严重的字母不起作用。
答案 0 :(得分:2)
修复产生无效XML的代码。将字符传递给XML库并指定合适的字符编码。 XML默认编码UTF-8就好了。
use utf8;
use XML::LibXML qw();
my $dom = XML::LibXML->createDocument('1.0', 'UTF-8');
my $root = $dom->createElement('root');
$root->appendText('è');
$dom->setDocumentElement($root);
$dom->toFile('foo.xml');
<?xml version="1.0" encoding="UTF-8"?>
<root>è</root>
use utf8;
use XML::LibXML qw();
my $dom = XML::LibXML->createDocument('1.0', 'ANSI_X3.4-1968');
my $root = $dom->createElement('root');
$root->appendText('è');
$dom->setDocumentElement($root);
$dom->toFile('foo.xml');
<?xml version="1.0" encoding="ANSI_X3.4-1968"?>
<root>è</root>
答案 1 :(得分:0)
您的Perl脚本与您尝试处理的文件之间可能存在编码不匹配的情况。如果您的HTML是UTF-8编码的,您可以尝试输入:
use utf8;
在脚本的开头。
更好的是,使用HTML :: Entities:
use utf8;
use HTML::Entities qw(encode_entities);
encode_entities 'è'; # returns 'è'