|
|
Line 1: |
Line 1: |
− | [[Category:Code]]
| |
| | | |
− | The simplest solution seems to be to use the [http://hackage.haskell.org/cgi-bin/hackage-scripts/package/utf8-string utf8-string package] from Galois. It
| |
− | provides a drop-in replacement for System.IO
| |
− |
| |
− | ''What about other string encodings?''
| |
− |
| |
− | == Example ==
| |
− | If we use a function from System.IO.UTF8, we should also hide the equivalent one from the Prelude. (Alternatively, we could import the UTF8 module qualified)
| |
− |
| |
− | <haskell>
| |
− | > import System.IO.UTF8
| |
− | > import Prelude hiding (readFile, writeFile)
| |
− | > import System.Environment (getArgs)
| |
− | </haskell>
| |
− |
| |
− | The readFile and writeFile functions are the same as before...
| |
− |
| |
− | <haskell>
| |
− | > main :: IO ()
| |
− | > main =
| |
− | > do args <- getArgs
| |
− | > mapM_ reverseUTF8File args
| |
− |
| |
− | > reverseUTF8File :: FilePath -> IO ()
| |
− | > reverseUTF8File f =
| |
− | > do c <- readFile f
| |
− | > writeFile (f ++ ".rev") $ reverseLines c
| |
− | > where
| |
− | > reverseLines = unlines . map reverse . lines
| |
− | </haskell>
| |