我想对某些文本进行网址编码(例如,用%20替换每个空格等)。我找到了“HTTP”Network.HTTP.Base.urlEncode并且可以使用它,但我想知道Yesod生态系统中是否还有其他通常使用的东西。
不幸的是,由于URL转发的复杂性,真正的答案是“它取决于”。例如,路径段和查询字符串的百分比编码规则略有不同。
我不知道你要编码的确切内容,但我建议坚持使用http-types包。一个开始的地方是urlEncode,虽然这个包中有许多其他功能(例如@jamshidh提到的encodePathSegments
)值得一看。
据我了解,URI编码很复杂。然而,对于我的简单案例,我能够使用uri-encode包。
我只需要:
encode :: String -> String
你可以想象,所有这一切都需要一个字符串,并返回URI编码版本。