diff --git a/Data/XCB/FromXML.hs b/Data/XCB/FromXML.hs
--- a/Data/XCB/FromXML.hs
+++ b/Data/XCB/FromXML.hs
@@ -30,14 +30,22 @@
 import Control.Monad
 import Control.Monad.Reader
 
+import System.IO (openFile, IOMode (ReadMode), hSetEncoding, utf8, hGetContents)
+
 -- |Process the listed XML files.
 -- Any files which fail to parse are silently dropped.
 -- Any declaration in an XML file which fail to parse are
 -- silently dropped.
 fromFiles :: [FilePath] -> IO [XHeader]
 fromFiles xs = do
-  strings <- sequence $ map readFile xs
+  strings <- sequence $ map readFileUTF8 xs
   return $ fromStrings strings
+
+readFileUTF8 :: FilePath -> IO String
+readFileUTF8 fp = do
+  h <- openFile fp ReadMode
+  hSetEncoding h utf8
+  hGetContents h
 
 -- |Process the strings as if they were XML files.
 -- Any files which fail to parse are silently dropped.
diff --git a/xcb-types.cabal b/xcb-types.cabal
--- a/xcb-types.cabal
+++ b/xcb-types.cabal
@@ -1,5 +1,5 @@
 Name:         xcb-types
-Version:      0.6.2
+Version:      0.6.3
 Cabal-Version:  >= 1.6
 Synopsis:     Parses XML files used by the XCB project
 Description:   This package provides types which mirror the structures
