html - 当输入允许时,如何防止对 html 实体进行双重编码

标签 html perl cpan encode

如何防止 html 实体的双重编码,或以编程方式修复它们?

我正在使用 HTML::Entities 中的 encode() 函数perl 模块对用户输入中的 HTML 实体进行编码。这里的问题是我们还允许用户直接输入 HTML 实体,而这些实体最终被双重编码。

例如,用户可以输入:

Stackoverflow & Perl = Awesome…

这最终被编码为

计算器Perl = Awesome…

这在浏览器中呈现为

Stackoverflow & Perl = Awesome…

我们希望它呈现为

Stackoverflow 和 Perl = 很棒...

有没有办法防止这种双重编码?或者是否有可以轻松纠正这些双重编码问题的模块或代码片段?

非常感谢任何帮助!

最佳答案

可以先解码字符串:

my $input = from_user();

my $encoded = encode_entities( decode_entities $input );

关于html - 当输入允许时,如何防止对 html 实体进行双重编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2604569/

相关文章:

python - Python 和 Perl 解决方案对 Wide Finder 挑战的比较

linux - 我可以从另一个完全独立的脚本中运行一个 Perl 脚本吗?

perl - 什么可以使 Class::Loader 在 "use"和 "new"不存在的地方失败?

json - Perl 无法加载 SSLeay.dll,因为未安装 LWP::Protocol::https

html - css 更改输入光标/插入符号颜色

Perl Open 和 Flock 超时

jquery - 缓存 JSON 响应

perl - 我如何说服 cpanminus 在 lib/而不是 lib/perl5 中安装模块?

javascript - 将 ul 添加到现有 ul 中的 li 元素

css - 悬停时如何删除边距属性