繁体   English   中英

HTML ::实体和编码撇号

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM