diff --git a/hack2-contrib.cabal b/hack2-contrib.cabal
--- a/hack2-contrib.cabal
+++ b/hack2-contrib.cabal
@@ -1,5 +1,5 @@
 Name:                 hack2-contrib
-Version:              2014.5.19
+Version:              2014.5.19.1
 Build-type:           Simple
 Synopsis:             Hack2 contrib
 Description:          Common middlewares and utilities for Hack2
diff --git a/src/Hack2/Contrib/Request.hs b/src/Hack2/Contrib/Request.hs
--- a/src/Hack2/Contrib/Request.hs
+++ b/src/Hack2/Contrib/Request.hs
@@ -15,7 +15,9 @@
 import Data.List (all)
 import Data.Char (isSpace)
 import Data.Text (Text, splitOn)
+import qualified Data.Text as T
 import Data.Text.Encoding (decodeUtf8, encodeUtf8)
+import Network.URI (unEscapeString)
 
 
 input_bytestring :: Env -> IO ByteString
@@ -69,7 +71,7 @@
 params env =
   if env.query_string.B.unpack.all isSpace
     then []
-    else env.query_string.decodeUtf8.decode_params.map_both encodeUtf8
+    else env.query_string.decodeUtf8.decode_params.map_both (T.unpack > unEscapeString > u2b > B.pack)
   where
     decode_params :: Text -> [(Text, Text)]
     decode_params x =
