首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在文本的href中转义%23

在文本的href中转义%23
EN

Stack Overflow用户
提问于 2015-05-12 22:12:43
回答 1查看 700关注 0票数 1

我正在尝试呈现来自用户的文本,其中包含一个url:https://example.com/%20%23654

我把网址传给urlize,我得到了这个:

代码语言:javascript
复制
In[1]: outp = urlize('https://example.com/%20%23654'); print outp
Out[1]: u'<a href="https://example.com/%20#654">https://example.com/%20%23654</a>'

我知道%20转义到一个空格,%23转到一个散列,但是为什么它只在href中转义哈希呢?这是个虫子吗?如果它是有意的,为什么它不将%20转义为空白呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-14 15:44:32

我不认为这是个窃听器。

我认为这个问题有两部分:

为什么它只释放散列而不是空格?为什么它只在href中执行不可逃避的操作,而不是在可见的链接文本中执行?

以下是我对第一个问题的看法:

散列是一个完全合法的URL路径字符。它通常用于HTML中的锚(例如,链接到文档中的一个!):

http://www.w3.org/TR/html4/struct/links.html#h-12.2

urlize意识到了这一点。它解开href中的散列。它适用于任何一个合法的URL字符的字母。下面是一个字母f的示例

代码语言:javascript
复制
>>> urlize('https://example.com/%66')
u'<a href="https://example.com/f">https://example.com/%66</a>'

另一方面,空格不是合法的URL字符(尽管它经常被容忍)。因此,在链接和可见链接描述中,它仍然被编码到%20

问题的第二部分是为什么它只是在链接中逃脱,而不是在可见的描绘中。这也很有道理。在href中,传入https://example.com/%66https://example.com/f并不重要。效果是一样的,描绘的是“罩下”。因此,urlize使用最简单的形式,没有不必要的编码。另一方面,将可见部分呈现给用户。因此,urlize试图保留最初传递给它的精确描述,因为这是最不令人惊讶的事情。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30202334

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档