如何避免格式错误的URI序列错误?

时间:2010-08-25 15:07:18

标签: perl escaping malformed

我正在使用perl。我将数据保存在数据库中 “

我希望转义这些字符以避免在客户端出现格式错误的URI序列错误。这个错误似乎只发生在火狐上。我在谷歌搜索时发现的修复不是使用decodeURI,但是我需要这个才能正确显示其他字符。

有任何帮助吗? <{1}}在服务器端似乎不够用。

提前致谢。


Detalils: 在perl我正在做以下事情:

uri_escape

并且在java脚本方面我想从这个div中读取并将其放在另一个地方,如下所示:

print "<div style='display:none;' id='summary_".$note_count."_note'>".uri_escape($summary)."</div>"; 

其中note_obj是在perl上保存摘要的隐藏div。 当我删除decodeURI问题解决了,我没有在java脚本上得到格式错误的URI序列错误。但我需要将decodeURI用于其他角色。

此问题似乎在firefox和IE7上重现。

2 个答案:

答案 0 :(得分:0)

您可以尝试使用CGI模块,然后执行

$uri = CGI::escape($uri);

也许这取决于你试图逃避uri的背景。
这在CGI环境中对我来说很好。

添加详细信息后,我可以建议:


<div style='display:none;' id='summary_".$note_count."_note'>".CGI::escape($summary)."</div>"; 

答案 1 :(得分:0)

网址转义在这里无法帮助您 - 这是用于转义网址,而不是转义HTML中的文字。你真正想要的是在输出时对字符串进行编码。请参阅Encode.pm内置库。确保在HTTP标题中找到正确的字符集语句:“Content-Type:text / html; charset = UTF-8”或类似内容。

如果你运气不好,你可能还需要对数据库中的字符串进行解码。这取决于数据库驱动程序和编码...