[英]HTML::Entities and encoding an apostrophe
我想做一些简单的事情,例如用其实体名称而不是其(十六进制)十进制编码一个撇号 。 但是,似乎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实体名称不可用? 还是应该以某种方式强迫它?
字符实体'
是仅在HTML5中引入的,在HTML4及更早版本中无效。 某些浏览器无法正确显示
simbabque 在其评论中链接到的Wikipedia页面说
使用
'
或自定义实体引用可能不受支持,并且可能会产生不可预测的结果。
HTML::Entities
采用安全的编码方式将其编码为'
在标准的任何迭代中均有效
该模块使用硬编码的哈希%entity2char
,并使用其构建逆映射以%char2entity
进行编码。 然后,将撇号的条目显式删除,以强制使用数字实体
delete $char2entity{"'"}; # only one-way decoding
(注释在原始代码中)
如果您愿意始终使用HTML5,则建议您使用HTML::HTML5::Entities
,它是“ HTML::Entities
替代品”,但提供了所有标准HTML5实体,包括'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.