我想做一些简单的操作,例如使用实体名称编码撇号而不是其(十六进制)十进制数。但是,似乎HTML :: Entities无法做到这一点。
use warnings;
use strict;
use HTML::Entities qw(encode_entities);
my $char = "'";
print encode_entities($char);
# '
但是,在从实体到字符的导出哈希中,撇号显示为apos
。
print $HTML::Entities::entity2char{'apos'}
# '
为什么某些字符的HTML实体名称不可用?或者应该以某种方式强迫它?
答案 0 :(得分:3)
字符实体'
仅在HTML5中引入,在HTML4及更早版本中无效。有些浏览器无法正确表示
在 Wikipedia page simbabque 链接到 in his comment 说这个
可能不支持使用
'
或自定义实体引用,并可能产生不可预测的结果。
HTML::Entities
采用安全路径将其编码为'
,这在标准的任何迭代中都有效
该模块使用硬编码哈希%entity2char
,并使用它在%char2entity
中构建用于编码的逆映射。然后显式删除撇号的条目以强制使用数字实体
delete $char2entity{"'"}; # only one-way decoding
(评论在原始代码中)
如果您愿意承诺在整个过程中使用HTML5
我建议您使用HTML::HTML5::Entities
这是一个
“HTML::Entities
”的替代品
但提供所有标准HTML5实体,包括'