2013-12-19 1 views
6

いくつかのテキストをURLエンコードしたいとします(たとえば、各スペースを%20などに置き換えてください)。私は "HTTP" Network.HTTP.Base.urlEncodeを見つけてそれを使うことができましたが、通常はYesodエコシステムで使用されているものがあるかどうか疑問に思っています。Yesodエコシステムでは、テキストを読み込むにはどのような方法が最適ですか?

+0

いくつかの調査の後、 "http-conduit" Network.HTTP.Conduit.parseUrlが "network" Network.URIから(escapeURIString isAllowedInURI)を使用することがわかりました。これは他のイエス様が使うものですか? – Tad

+0

コードをGrepして、私はYesod.hsのjoinPathがNetwork.HTTP.Types.encodePath/encodePathSegmentsを使ってパスを作成していることを発見しました。これは他のものの中でエスケープしています。これはエスケープされたURLを作成するためのものですしかし、(テキストではなく)解析されたパスオブジェクトから。 – jamshidh

答えて

6

URLエスケープの複雑さのために、実際の答えは「それは依存しています」です。たとえば、パスセグメントとクエリ文字列のパーセントエンコーディングのルールは少し異なります。

エンコードしようとしているものは正確にはわかりませんが、http-typesパッケージに固執することをおすすめします。 1つの場所はurlEncodeとなりますが、そのパッケージには他の多くの機能があります(例えば、@jamshidhが言及したencodePathSegmentsなど)。

+0

マイケルとジャムシッドありがとう! – Tad

+0

詳細:http://stackoverflow.com/questions/33704839/discrepancies-of-percent-encoding-for-urls –

1

私が理解しているように、URIエンコーディングは複雑です。しかし私の単純なケースでは、私はuri-encodeパッケージで手に入れることができました。

私は必要なすべてがあった。

encode :: String -> String 

あなたが想像できるように、それは文字列を取り、URIエンコードされたバージョンをあなたにお返ししないすべて。

関連する問題