Haskell 将字符串的UTF-8编码存储在ByteString中

Haskell 将字符串的UTF-8编码存储在ByteString中,haskell,utf-8,bytestring,Haskell,Utf 8,Bytestring,所以我想访问字符串的UTF-8编码的各个字节 我尝试使用,但似乎只是将其截断到每个字符的最后一个字节: ghci> Char8.pack "\945\946\947" "\177\178\179" 如果我可以从文件中读取字符串,则这不是问题: ghci> Prelude.writeFile "temp.txt" "\945\946\947" >> Char8.readFile "temp.txt" "\206\177\206\178\206\179" 但是我想要一种

所以我想访问字符串的UTF-8编码的各个字节

我尝试使用,但似乎只是将其截断到每个字符的最后一个字节:

ghci> Char8.pack "\945\946\947" 
"\177\178\179"
如果我可以从文件中读取字符串,则这不是问题:

ghci> Prelude.writeFile "temp.txt" "\945\946\947" >> Char8.readFile "temp.txt"
"\206\177\206\178\206\179"
但是我想要一种纯粹的方式来转换
String->ByteString
,而无需截断,并且。

您可以使用:

或者,您也可以使用来自软件包的,该软件包提供了比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"

我记得读过一些关于hayoo的文章,在搜索中包含了比hoogle更多的包,所以我,它给了我正确的答案,作为第二个结果:编码包相当不错!我希望它没有那么多高级依赖项。。。
ghci> import Data.Encoding as E
ghci> import Data.Encoding.UTF8
ghci> E.encodeStrictByteString UTF8 "\945\946\947"
"\206\177\206\178\206\179"