Haskell も文字列と文字コードについて
例えば日本語文字列をprint で表示してみると、
Prelude> print "こ" "\12371"
と表示されます。
これは、 Unicode のコードポイント と呼ばれるものが表示されています。
次に、文字列をCodec.Binary.UTF8.String.encodeString を使ってUTF8 文字列に直してから表示してみると
Prelude> :m + Codec.Binary.UTF8.String Prelude Codec.Binary.UTF8.String> print $ encodeString "こ" "\227\129\147"
と表示されます。
これは、 "こ"のコードポイントに対応するUTF8 エンコーディング が表示されています。
Haskell のコード内で文字列をUTF8 エンコードする処理が必要な場合には、Codec.Binary.UTF8.String モジュールを使うとよいでしょう。
このモジュールを使うためにはcabal で utf8-string をインストールしましょう。
$ cabal install utf8-string
また、
Prelude> putStrLn "こんにちは" "こんにちは"
といったように、putStrLn を使って表示をした場合や、ファイル入出力を
行う際には、(最新のHaskell Platform を使用しているならば)System.IO が
自動的にHaskell の内部文字列とUTF8 文字列の変換をしてくれるようです。
に詳しく書かれているので参照してください。