UTF-8: Difference between revisions
Tomjaguarpaw (talk | contribs) (Deleting page that hasn't been updated for over 10 years) |
m (Reverted edits by Tomjaguarpaw (talk) to last revision by PhilipNeustrom) |
||
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> |
Latest revision as of 15:20, 6 February 2021
The simplest solution seems to be to use the 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)
> import System.IO.UTF8
> import Prelude hiding (readFile, writeFile)
> import System.Environment (getArgs)
The readFile and writeFile functions are the same as before...
> 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