JavaScript: 如何对包含破折号(-)的字符串进行URL编码?

4

我有一个字符串,表示实体的名称。该实体的名称中有一个破折号(-)。如何编码破折号?我相信它应该编码为“%2D”,但是当我尝试使用encodeURIComponent()或encodeURI()时,它不会对破折号进行编码。我想知道是否有一种编码函数可以对破折号进行编码,而不仅仅是进行.replace操作。


它不需要在URL中进行编码,如果您想要以%表示,您需要自己替换它。(在通过encode*()进行任何其他编码之后) - Alex K.
这对于将任意URL放入SVG注释非常有用,因为字符串中的“--”将终止注释并破坏SVG。 在URL中使用“%2D%2D”是可以的。 - forresto
1个回答

13

-是出现在ASCII字符集中的一个字符,在URL中没有特殊含义。虽然你可以将其编码为%2D,但这不是必需的,也不是常规的。把它编码就像使用%61代替a一样。

没有标准的编码函数能够对-进行编码。如果你真的想要,replace是一个合理的选择。


1
谢谢,我想我的用例很独特,也许暗示着设计上的缺陷。但我们正在使用破折号(-)替换空格以构建指向实体的URL。然后当我们的应用程序路由到其中一个URL时,我们将URL中的破折号替换为空格并获取实体。当我意识到实体名称已经有一个破折号时,我的问题就出现了。现在我在考虑是否需要重新设计我们如何使用破折号替换空格等方面。 - connected_user

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接