HTML::Entities 并编码撇号
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 及更早版本中无效。某些浏览器无法正确显示它
Wikipedia page
simbabque 链接到
说这个
The use of '
or custom entity references may not be supported and may produce unpredictable results.
HTML::Entities
采用将其编码为 '
的安全路线,这在标准
的任何迭代中均有效
该模块使用硬编码散列 %entity2char
,并使用它来为 %char2entity
中的编码构建逆向映射。然后显式删除撇号条目以强制使用数字实体
delete $char2entity{"'"}; # only one-way decoding
(注释在原代码中)
如果您愿意承诺在整个过程中使用 HTML5
我建议你使用 HTML::HTML5::Entities
这是一个
"drop-in replacement for HTML::Entities
"
但提供所有标准 HTML5 实体,包括 '
我想做一些简单的事情,比如用实体名称而不是(十六进制)十进制数 对撇号进行编码。不过,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 及更早版本中无效。某些浏览器无法正确显示它
Wikipedia page
simbabque 链接到
The use of
'
or custom entity references may not be supported and may produce unpredictable results.
HTML::Entities
采用将其编码为 '
的安全路线,这在标准
该模块使用硬编码散列 %entity2char
,并使用它来为 %char2entity
中的编码构建逆向映射。然后显式删除撇号条目以强制使用数字实体
delete $char2entity{"'"}; # only one-way decoding
(注释在原代码中)
如果您愿意承诺在整个过程中使用 HTML5
我建议你使用 HTML::HTML5::Entities
这是一个
"drop-in replacement for HTML::Entities
"
但提供所有标准 HTML5 实体,包括 '