我在Python中有以下代码:
linkHTML = "<a href=\"page?q=%s\">click here</a>" % strLink
问题是当strLink中有空格时,链接显示为
<a href="page?q=with space">click here</a>
我可以使用strLink.replace(“”,“+”)
但我确信还有其他字符会导致错误。我尝试使用
urllib.quote(strLink)
但它似乎没有帮助。
谢谢! 乔尔
答案 0 :(得分:2)
确保使用urllib.quote_plus(string [,safe])将空格替换为加号。
urllib.quote_plus(string[, safe])
与quote()类似,但也替换空格 按引号要求加号 构建a时的HTML表单值 查询字符串以进入URL。加 原始字符串中的符号是 逃脱,除非他们被包括在内 安全。它也没有安全感 默认为'/'。
来自http://docs.python.org/library/urllib.html#urllib.quote_plus
理想情况下,您将使用urllib.urlencode函数并传递一系列键/值对,如{[“q”,“with space”],[“s”,“with space&amp; other”]等等。
答案 1 :(得分:1)
除了quote_plus
(*)之外,您还需要对输出到HTML的任何文本进行HTML编码。否则<
和&
符号将被标记,并带来潜在的安全后果。 (好吧,你不会在URL中得到<
,但你肯定会得到&
,所以只有一个参数名称与HTML实体名称匹配,而你的字符串搞砸了。< / p>
html= '<a href="page?q=%s">click here</a>' % cgi.escape(urllib.quote_plus(q))
*:实际上普通的quote
也很好;我不知道什么不适合你,但它是URL编码字符串的一种非常好的方式。它将空格转换为%20
,这也是有效的,并且在路径部分也有效。 quote_plus
最适合生成查询字符串,但如果有疑问,quote
最安全。