Encode filenames as UTF8.

Resolves Issue #252 (pandoc doesn't properly handle unicode filenames).
This commit is contained in:
John MacFarlane 2010-09-10 19:53:45 -07:00
parent 6ccdde5571
commit ca5217881d
2 changed files with 5 additions and 4 deletions

View file

@ -38,6 +38,7 @@ module Text.Pandoc.UTF8 ( readFile
where where
import qualified Data.ByteString as B import qualified Data.ByteString as B
import Codec.Binary.UTF8.String (encodeString)
import Data.ByteString.UTF8 (toString, fromString) import Data.ByteString.UTF8 (toString, fromString)
import Prelude hiding (readFile, writeFile, getContents, putStr, putStrLn) import Prelude hiding (readFile, writeFile, getContents, putStr, putStrLn)
import System.IO (Handle) import System.IO (Handle)
@ -51,10 +52,10 @@ stripBOM s | bom `B.isPrefixOf` s = B.drop 3 s
stripBOM s = s stripBOM s = s
readFile :: FilePath -> IO String readFile :: FilePath -> IO String
readFile = liftM (toString . stripBOM) . B.readFile readFile = liftM (toString . stripBOM) . B.readFile . encodeString
writeFile :: FilePath -> String -> IO () writeFile :: FilePath -> String -> IO ()
writeFile f = B.writeFile f . fromString writeFile f = B.writeFile (encodeString f) . fromString
getContents :: IO String getContents :: IO String
getContents = liftM (toString . stripBOM) B.getContents getContents = liftM (toString . stripBOM) B.getContents

View file

@ -54,7 +54,7 @@ import Network.HTTP (simpleHTTP, mkRequest, getResponseBody, RequestMethod(..))
import Network.URI (parseURI, isURI) import Network.URI (parseURI, isURI)
import qualified Data.ByteString.Lazy as B import qualified Data.ByteString.Lazy as B
import Data.ByteString.Lazy.UTF8 (toString, fromString) import Data.ByteString.Lazy.UTF8 (toString, fromString)
import Codec.Binary.UTF8.String (decodeString) import Codec.Binary.UTF8.String (decodeString, encodeString)
copyrightMessage :: String copyrightMessage :: String
copyrightMessage = "\nCopyright (C) 2006-2010 John MacFarlane\n" ++ copyrightMessage = "\nCopyright (C) 2006-2010 John MacFarlane\n" ++
@ -850,4 +850,4 @@ main = do
if outputFile == "-" if outputFile == "-"
then B.putStr writerOutput then B.putStr writerOutput
else B.writeFile outputFile writerOutput else B.writeFile (encodeString outputFile) writerOutput