在Perl中,如何将包含utf-8字符的字符串转换为&.;?
发布于 2012-10-08 23:16:09
首先,在空模式上拆分以获得单个字符的列表。然后,将每个字符映射到自身,如果它是ASCII,或者它的代码,如果不是:
use Encode qw( decode_utf8 );
my $utf8_string = "\xE2\x80\x9C\x68\x6F\x6D\x65\xE2\x80\x9D";
my $unicode_string = decode_utf8($utf8_string);
my $html = join q(),
map { ord > 127 ? "&#" . ord . ";"
: $_
} split //, $unicode_string;发布于 2013-07-16 15:54:21
只需简单地计算ord +必需的HTML实体格式,就可以替换所有不可打印和不低的ASCII符号(即\x20 - \x7F区域以外的任何符号)。Perl有/e标志,表示替换应该被视为代码。
use utf8;
my $str = "testТест"; # This is correct UTF-8 string right in the code
$str =~ s/([^[\x20-\x7F])/"&#" . ord($1) . ";"/eg;
print $str;
# testТестhttps://stackoverflow.com/questions/12790643
复制相似问题