我读到,Char8仅支持ASCII字符,如果您使用其他Unicode字符,则使用它可能会很危险。
那么,使用
{-# LANGUAGE OverloadedStrings #-}
--import qualified Data.ByteString as B
import qualified Data.ByteString.Char8 as BC
import qualified Data.Text.IO as TIO
import qualified Data.Text.Encoding as E
import qualified Data.Text as T
name :: T.Text
name = "{ \"name\": \"哈时刻\" }"
nameB :: BC.ByteString
nameB = E.encodeUtf8 name
main :: IO ()
main = do
BC.writeFile "test.json" nameB
putStrLn "done"
产生相同的结果,就像
{-# LANGUAGE OverloadedStrings #-}
import qualified Data.ByteString as B
--import qualified Data.ByteString.Char8 as BC
import qualified Data.Text.IO as TIO
import qualified Data.Text.Encoding as E
import qualified Data.Text as T
name :: T.Text
name = "{ \"name\": \"哈时刻\" }"
nameB :: B.ByteString
nameB = E.encodeUtf8 name
main :: IO ()
main = do
B.writeFile "test.json" nameB
putStrLn "done"
那么,使用
Data.ByteString.Char8
和 Data.ByteString
有什么区别呢?
BC.ByteString
是Data.ByteString.ByteString
的重新导出,您将其用作B.ByteString
- 因此这些字面上是指相同的类型,所有代码都是相同的,所以... - Thomas M. DuBuisson