[Haskell-cafe] Unicode strings
Luis F. Araujo
luis at arjox.org
Sun Nov 5 13:46:43 EST 2006
Pupeno wrote:
> Hello,
> I am trying to make a program that outputs some Unicode characters but the
> output doesn't match what I try to print.
> Attached is a little test program. It tries to print the arrows "←↑→↓" but
> instead it outputs "\220\221\222\223" (that is, character number 220, then
> 221, then 222). I've also tried writing the Unicode code points (although GHC
> 6.6 should deal just fine with Unicode source code) and I get the same
> result. In case anybody wants to try, this would be the
> string: "\8592\8593\8594\8595".
> I am also attaching the output file, you can see that the contents are not
> right.
> Any ideas what am I doing wrong here ?
> Thank you.
>
> ------------------------------------------------------------------------
>
> import qualified System.IO as IO
>
> main = do
> let str = "←↑→↓"
> putStrLn str
> h <- IO.openFile "test.output" IO.WriteMode
> IO.hPutStrLn h str
>
>
>
The problem is with the output of putStrLn. You need to encode the
string into utf8.
You can find several modules on the web, i have been using this one:
http://www.haskell.org/pipermail/haskell-i18n/2004-February/000127.html
More information about the Haskell-Cafe
mailing list