diff --git a/hinotify.cabal b/hinotify.cabal
--- a/hinotify.cabal
+++ b/hinotify.cabal
@@ -1,5 +1,5 @@
 name:               hinotify
-version:            0.3.5
+version:            0.3.6
 build-type:         Simple
 synopsis:           Haskell binding to inotify
 description:
@@ -27,7 +27,7 @@
 library
     build-depends:  unix
     if flag(split-base)
-        build-depends:  base >= 4.3.0.0 && < 5, containers, directory
+        build-depends:  base >= 4.5.0.0 && < 5, containers, directory
     else
         build-depends:  base < 3
     extensions:     ForeignFunctionInterface
diff --git a/src/System/INotify.hsc b/src/System/INotify.hsc
--- a/src/System/INotify.hsc
+++ b/src/System/INotify.hsc
@@ -41,7 +41,7 @@
 import Data.Maybe
 import Data.Map (Map)
 import qualified Data.Map as Map
-import Foreign.C
+import Foreign.C hiding (withCString)
 import Foreign.Marshal hiding (void)
 import Foreign.Ptr
 import Foreign.Storable
@@ -55,6 +55,8 @@
 import System.Posix.Internals
 #endif
 import System.Posix.Files
+import GHC.IO.Encoding (getFileSystemEncoding)
+import GHC.Foreign (withCString)
 
 import System.INotify.Masks
 
@@ -194,7 +196,8 @@
              Nothing
              (Just fp)
     let mask = joinMasks (map eventVarietyToMask masks)
-    wd <- withCString fp $ \fp_c ->
+    enc <- getFileSystemEncoding
+    wd <- withCString enc fp $ \fp_c ->
             throwErrnoIfMinus1 "addWatch" $
               c_inotify_add_watch (fromIntegral fd) fp_c mask
     let event = \e -> do
