【问题标题】:Encoding Special Characters in Perl在 Perl 中编码特殊字符
【发布时间】:2021-09-26 10:03:35
【问题描述】:

我有这个字符串例如:

This is an example text ã&"><£

当我在字符串上运行这个 Perl 代码时:

my($string)= @_;
$string =~ s/>//g;
$string =~ s/<//g;
$string =~ s/&/and/g;
$string  =~ s/\"//g;
$string  =~ s/-//;
$string  =~ s/ó//;
$string =~ s/;//g;
$string =~ s/&/&amp;/g;

$string = encode_entities($string, '<>&"');
$string = encode_utf8($string);

return $string;      

我收到了这个结果:

This is an example text ã£ã£

而不是预期的:

This is an example text ã&amp;&quot;&gt;&lt;£

我该如何解决?

【问题讨论】:

  • 请出示您的完整剧本。请参阅minimal reproducible example 了解更多信息
  • 嗨,我用完整的脚本编辑了上面的问题。那些行是: $string =~ s/>//g;删除特殊字符?
  • 是的,您显示的代码删除了一些字符并替换了其他一些字符。我不确定你的意思?
  • 对不起,我是 perl 新手,这不是我写的代码。只是为了理解,这行代码: $string =~ s/&/&/g;从我的字符串中删除 &?
  • 尝试运行echo "&amp;1&amp;2" | perl -pE 's/&amp;/&amp;amp;/g' 你会看到它用“&amp1;&amp2;”替换了字符串“&1&2”

标签: html perl encoding


【解决方案1】:

你能试试下面的脚本吗:

use feature qw(say);
use strict;
use warnings;
use utf8;
use open qw(:std :encoding(utf-8));
use HTML::Entities;

my $string = 'This is an example text ã&"><£';
$string = encode_entities($string, '<>&"');
say $string;

输出

This is an example text ã&amp;&quot;&gt;&lt;£

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-10
    相关资源
    最近更新 更多