[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