2013-12-19 51 views
6

我想对一些文本进行网址编码(例如,用%20替换每个空格等)。我找到了“HTTP”Network.HTTP.Base.urlEncode并可以使用它,但我想知道是否还有别的东西在Yesod生态系统中正常使用。在Yesod生态系统中,urlencode一些文本的最佳方式是什么?

+0

经过一番狩猎之后,我发现“http-conduit”Network.HTTP.Conduit.parseUrl从“network”Network.URI使用(escapeURIString isAllowedInURI)。这是什么其他Yesod'ers使用? – Tad

+0

Grep'ing通过代码,我发现在Yesod.hs中的joinPath使用Network.HTTP.Types.encodePath/encodePathSegments创建路径,其中包括转义百分比......这是为了创建百分比转义的url从一个解析的路径对象(不是从文本)。 – jamshidh

回答

6

不幸的是,由于URL转义的复杂性,真正的答案是“这取决于”。例如,对于路径段和查询字符串的编码百分比稍有不同。

我不确切知道你想要编码什么,但我建议坚持使用http-types包。一个开始的地方是urlEncode,虽然这个包中有很多其他功能(比如@jamshidh提到的encodePathSegments),值得一看。

+0

谢谢Michael和jamshidh! – Tad

+0

欲了解更多信息:http://stackoverflow.com/questions/33704839/discrepancies-of-percent-encoding-for-urls –

1

据我所知,URI编码很复杂。然而,就我的简单情况而言,我能够通过uri-encode包得到解决。

所有我需要的是:

encode :: String -> String 

你可以想像,所有它没有考虑一个字符串,并给你回的URI编码版本。

相关问题