出力にはHaskellを使用してUTF-8でエンコードされた延ByteString
-
21-09-2019 - |
質問
私はコンソールに単純に出力UTF-8でエンコードされたデータにしようと私の心から出て行くよ。
私はこの使用してString
を達成するために管理してきましたが、今はByteString
と同じことをしたいと思います。素晴らしく、これを実行するための高速な方法はありますか?
これは私がこれまで持っているものであり、それは働いていない。
import Prelude hiding (putStr)
import Data.ByteString.Char8 (putStr, pack)
main :: IO ()
main = putStr $ pack "čušpajž日本語"
これはぐふ、uapaj~�,�
を出力します。
この私が、最新のGHC 6.12.1最高のための答えが欲しいです
ありがとうございます。
更新:単純に読み込み、出力テキストの同じUTF-8でエンコードされた行が正常に動作するようです。 (Data.ByteString.Char8
を使用して、私はちょうどputStr =<< getLine
を行います。)しかし、上記の例のように、出力することを拒否し、適切に...私は?何か間違っているしなければなりません。
解決
utf8-string
サポートのバイト文字列ます。
import Prelude hiding (putStr)
import Data.ByteString.Char8 (putStr)
import Data.ByteString.UTF8 (fromString)
main :: IO ()
main = putStr $ fromString "čušpajž日本語"
他のヒント
bytestrings
はバイトの文字列です。彼らは、出力しているとき、それはData.ByteString.Char8
のドキュメントで説明して、彼らは、8ビットに切り捨てられます。あなたが明示的にUTF8に変換する必要があります - 。バイト文字列のサポートが含まれていHackage上utf8-string
パッケージを経由して
しかし、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ž日本語
所属していません StackOverflow