user12163
问问题
10601 次
3 回答
27
utf8-string
supports bytestrings.
import Prelude hiding (putStr)
import Data.ByteString.Char8 (putStr)
import Data.ByteString.UTF8 (fromString)
main :: IO ()
main = putStr $ fromString "čušpajž日本語"
于 2010-01-18T21:03:16.417 回答
21
bytestrings
are strings of bytes. When they're output, they will be truncated to 8 bits, as it describes in the documentation for Data.ByteString.Char8
. You'll need to explicitly convert them to utf8 - via the utf8-string
package on Hackage, which contains support for bytestrings.
However, as of 2011, you should use the text
package, for fast, packed unicode output. GHC truncating Unicode character output
Your example becomes a lot simpler:
{-# LANGUAGE OverloadedStrings #-}
import qualified Data.Text as T
import qualified Data.Text.IO as T
main = T.putStrLn "čušpajž日本語"
Like so:
$ runhaskell A.hs
čušpajž日本語
于 2010-01-18T17:20:40.620 回答
-2
于 2010-01-18T16:31:38.850 回答