We have some file in some encoding (for example, `UTF16BE`), ans we want to convert it to `UTF-8` encoding. ### Solution We have to install packages [`iconv`](http://hackage.haskell.org/package/iconv) and [`bytestring`](http://hackage.haskell.org/package/bytestring). Now: ```haskell module Main where import Codec.Text.IConv (convert) import Data.ByteString.Lazy as Lazy import Data.ByteString as Strict main :: IO () main = do let path = "/Users/dshevchenko/f4.cpp" -- Read a file lazily, not strictly... text <- Strict.readFile path let convertedText = convert "UTF-16BE" "UTF-8" (fromStrict text) -- Write in the same file... Lazy.writeFile path convertedText ``` That's all. ### Remark `iconv` package is a wrapper around a Unix-utility `iconv`. So you can view a complete list of supported encodings, just run: ```bash $ iconv -l ```