diff --git a/Network/Wai/Middleware/CleanPath.hs b/Network/Wai/Middleware/CleanPath.hs
--- a/Network/Wai/Middleware/CleanPath.hs
+++ b/Network/Wai/Middleware/CleanPath.hs
@@ -10,6 +10,7 @@
 import qualified Data.ByteString.Char8 as B
 import qualified Data.ByteString.Lazy as L
 import Network.URI (unEscapeString)
+import qualified Data.ByteString.UTF8 as BSU
 
 cleanPathFunc :: (B.ByteString -> Either B.ByteString [String])
               -> B.ByteString
@@ -52,7 +53,7 @@
 splitPath s =
     let corrected = B.pack $ rts $ ats $ rds $ B.unpack s
      in if corrected == s
-            then Right $ map (unEscapeString . B.unpack)
+            then Right $ map (BSU.toString . B.pack . unEscapeString . B.unpack)
                        $ filter (not . B.null)
                        $ B.split '/' s
             else Left corrected
diff --git a/wai-extra.cabal b/wai-extra.cabal
--- a/wai-extra.cabal
+++ b/wai-extra.cabal
@@ -1,5 +1,5 @@
 Name:                wai-extra
-Version:             0.2.2
+Version:             0.2.2.1
 Synopsis:            Provides some basic WAI handlers and middleware.
 Description:         The goal here is to provide common features without many dependencies.
 License:             BSD3
@@ -23,7 +23,8 @@
                      time >= 1.1.4 && < 1.3,
                      sendfile >= 0.6.1 && < 0.7,
                      network >= 2.2.1.5 && < 2.3,
-                     directory >= 1.0.1 && < 1.1
+                     directory >= 1.0.1 && < 1.1,
+                     utf8-string >= 0.3.4 && < 0.4
   Exposed-modules:   Network.Wai.Handler.CGI
                      Network.Wai.Handler.SimpleServer
                      Network.Wai.Middleware.CleanPath
