8

したがって、文字列の UTF-8 エンコーディングの個々のバイトにアクセスしたいと考えています。

を使用してみData.ByteString.Char8.packましたが、各文字の最後のバイトに切り捨てられているようです:

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しかし、切り捨てなしで変換する純粋な方法が欲しいのですが、 hoogle はあまり役に立ちません

4

1 に答える 1

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"

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"
于 2012-12-26T23:26:51.760 に答える