26
4

3 に答える 3

27

utf8-stringバイト文字列をサポートします。

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バイトの文字列です。のドキュメントで説明されているように、出力時に 8 ビットに切り捨てられますData.ByteString.Char8utf8-stringバイト文字列のサポートを含む Hackageのパッケージを介して、明示的に utf8 に変換する必要があります。


ただし、2011 年以降はtext、パックされた高速な Unicode 出力のために、パッケージを使用する必要があります。GHCがUnicode文字出力を切り捨てる

あなたの例はもっと簡単になります:

{-# LANGUAGE OverloadedStrings #-}

import qualified Data.Text    as T
import qualified Data.Text.IO as T

main = T.putStrLn "čušpajž日本語"

そのようです:

$ runhaskell A.hs
čušpajž日本語
于 2010-01-18T17:20:40.620 に答える
-2

これは既知の ghc バグであり、「wontfix」とマークされています。

于 2010-01-18T16:31:38.850 に答える