Perl脚本生成HTML时内嵌<>标签的数据无法正常显示如何修复
问题修复方案
根因说明
你遇到的问题是两方面共同导致的:
- SQL查询语句存在语法错误,无法正确获取MESSAGE字段的完整内容
- 生成的HTML缺少标准文档结构,可能导致浏览器渲染异常
具体修复步骤
- 1 修正SQL语法错误
原SELECT语句中ID字段后缺少逗号,导致查询字段结构异常,修改后语句如下:
SELECT DBA_Reports.dbo.undelivered_raw_host_msgs.ID, DBA_Reports.dbo.undelivered_raw_host_msgs.MESSAGE FROM DBA_Reports.dbo.undelivered_raw_host_msgs
- 2 替换HTML转义模块(可选,兼容无额外模块的环境)
你当前使用的HTML::Escape需要额外安装,可替换为Perl标准库自带的HTML::Entities模块,修改对应代码:
# 把原来的use行替换为 use HTML::Entities 'encode_entities'; # 循环输出字段时,把ID也做转义处理,MESSAGE转义替换为对应函数 $Output .= '<TR><TD align=center rowspan=1 valign=top width=1000 height=1000>' . encode_entities($ref->{'ID'}).'</TD>' . '<TD align=center rowspan=1 valign=top width=1000 height=1000>' . encode_entities($ref->{'MESSAGE'}).'</TD></TR>';
- 3 补全HTML标准文档结构
避免浏览器因为HTML不标准出现渲染异常,修改HTML拼接逻辑:
$Output = <<"HTML_DOC"; <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>未送达原始消息列表</title> </head> <body> $tbl$tblhd$Output </table> </body> </html> HTML_DOC
- 4 修正路径写法(可选,避免Windows环境路径解析错误)
Perl中双引号内的反斜杠为转义符,建议把所有Windows路径的反斜杠替换为正斜杠,例如:
my $filename1 = 'D:/Perl32/Scripts/UndeliveredRAW.html';
内容的提问来源于stack exchange,提问作者SQL Novice
相关产品推荐
相关产品推荐

