ram*_*ion 8 haskell utf-8 bytestring
所以我想访问字符串的UTF-8编码的各个字节.
我试过使用Data.ByteString.Char8.pack,但这似乎只是将其截断为每个字符的最后一个字节:
ghci> Char8.pack "\945\946\947"
"\177\178\179"
Run Code Online (Sandbox Code Playgroud)
如果我可以从文件中读取字符串,这不是问题:
ghci> Prelude.writeFile "temp.txt" "\945\946\947" >> Char8.readFile "temp.txt"
"\206\177\206\178\206\179"
Run Code Online (Sandbox Code Playgroud)
但是我想要一种纯粹的方式来转换String -> ByteString而不会截断,并且hoogle不是很有帮助.
Nik*_* B. 13
你可以使用Data.ByteString.UTF8.fromString:
ghci> import Data.ByteString.UTF8 as BSUTF8
ghci> :t BSUTF8.fromString
BSUTF8.fromString :: String -> ByteString
ghci> BSUTF8.fromString "\945\946\947"
"\206\177\206\178\206\179"
Run Code Online (Sandbox Code Playgroud)
另外,您也可以使用encode{Strict,Lazy}ByteString从encoding包,它提供的不仅仅是UTF-8更大量的编码:
ghci> import Data.Encoding as E
ghci> import Data.Encoding.UTF8
ghci> E.encodeStrictByteString UTF8 "\945\946\947"
"\206\177\206\178\206\179"
Run Code Online (Sandbox Code Playgroud)