module System.IO.Encoding (
readFileWithEncoding
, readFileWithEncoding'
, writeFileWithEncoding
, TextEncoding
, latin1
, utf8
, utf8_bom
, utf16
, utf16be
, utf16le
, utf32
, utf32be
, utf32le
, localeEncoding
, char8
) where
import Control.DeepSeq
import Control.Monad.Base
import Data.IOData
import System.IO
readFileWithEncoding :: (MonadBase IO m, IOData a) => TextEncoding -> FilePath -> m a
readFileWithEncoding enc p = liftBase $ do
h <- openFile p ReadMode
hSetEncoding h enc
Data.IOData.hGetContents h
readFileWithEncoding' :: (MonadBase IO m, IOData a, NFData a) => TextEncoding -> FilePath -> m a
readFileWithEncoding' enc p = liftBase $ withFile p ReadMode $ \h -> do
hSetEncoding h enc
s <- Data.IOData.hGetContents h
deepseq s $ pure s
writeFileWithEncoding :: (MonadBase IO m, IOData a) => TextEncoding -> FilePath -> a -> m ()
writeFileWithEncoding enc p s = liftBase $ withFile p WriteMode $ \h -> do
hSetEncoding h enc
Data.IOData.hPut h s