2013-12-19 4 views
6

일부 텍스트를 URL 인코딩 (예 : 각 공간을 % 20 (으)로 바꾸기 등)하고 싶습니다. "HTTP"Network.HTTP.Base.urlEncode를 발견하고이를 사용할 수는 있지만, 일반적으로 Yesod 생태계에서 사용되는 다른 것이 있는지 궁금합니다.Yesod 생태계에서 일부 텍스트를 urlencode하는 가장 좋은 방법은 무엇입니까?

+0

일부 사냥을 한 후에 "http-conduit"Network.HTTP.Conduit.parseUrl이 "network"Network.URI에서 (escapeURIString isAllowedInURI)를 사용함을 발견했습니다. 다른 예이디 사람들이 사용하는 것입니까? – Tad

+0

코드를 통해 Grep'ing, 나는 Yesod.hs의 joinPath가 Network.HTTP.Types.encodePath/encodePathSegments를 사용하여 다른 것들 사이에서 이스케이프 비율을 수행하는 경로를 만드는 것을 발견했습니다. 이것은 퍼센트 생성 된 이스케이프 된 URL을위한 것입니다 구문 분석 된 경로 개체에서 (텍스트가 아닌). – jamshidh

답변

6

URL 이스케이프의 복잡성으로 인해 실제 답변은 "다릅니다."입니다. 예를 들어 경로 세그먼트 및 쿼리 문자열의 인코딩 비율에 약간 다른 규칙이 있습니다.

인코딩하려는 내용을 정확히 모르지만 http-types 패키지를 사용하는 것이 좋습니다. 하나의 장소는 urlEncode이 될 것입니다. 그러나 그 패키지에는 다른 많은 기능들이 있습니다 (예 : @jamshidh가 말한 encodePathSegments).

+0

감사합니다. Michael and jamshidh! – Tad

+0

자세한 정보 : http://stackoverflow.com/questions/33704839/discrepancies-of-percent-encoding-for-urls –

1

이해하는 바와 같이 URI 인코딩은 복잡합니다. 그러나 나의 단순한 경우에, 나는 uri-encode 꾸러미로 얻을 수 있었다.

내가 필요한 모든

했다 : 당신이 상상할 수 있듯이

encode :: String -> String 

, 모든 그것이 문자열을하고, URI로 인코딩 된 버전을 돌려주지 않습니다.