2013-12-19 56 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編碼版本。

相關問題