diff --git a/route-generator.cabal b/route-generator.cabal
--- a/route-generator.cabal
+++ b/route-generator.cabal
@@ -1,5 +1,5 @@
 name:            route-generator
-version:         0.3
+version:         0.3.1
 cabal-version:   >= 1.8
 license:         OtherLicense
 license-file:    COPYING
diff --git a/routeGenerator.hs b/routeGenerator.hs
--- a/routeGenerator.hs
+++ b/routeGenerator.hs
@@ -64,7 +64,7 @@
 		putStr (unwords args)
 		putStr " = URI \"\" Nothing ('/' : intercalate \"/\" ["
 		putStr $ intercalate ", " $ snd $ foldr (\p (n,xs) -> case p of
-				Dynamic -> (n-1, ("unpack $ toPathPiece arg" ++ show n):xs)
+				Dynamic -> (n-1, ("escapeURIString (\\c -> not (isReserved c || not (isUnescapedInURI c)) ) $ unpack $ toPathPiece arg" ++ show n):xs)
 				Static s -> (n, show s : xs)
 			) (length args, []) (pieces r)
 		putStrLn "]) \"\" \"\""
@@ -181,7 +181,7 @@
 
 		when (PathHelpers `elem` flags) $ do
 			putStrLn "import Data.List (intercalate)"
-			putStrLn "import Network.URI (URI(..))"
+			putStrLn "import Network.URI (URI(..), escapeURIString, isReserved, isUnescapedInURI)"
 			putStrLn "import Data.Text (unpack)"
 			putStrLn "import Web.PathPieces (toPathPiece)"
 
